Win7 自带 .Net 3.5.1,支持 lambdaWin8 自带 .Net 3.5.1 + .Net 4.5Win10 自带 .Net 4.6Win10 1709 自带 .Net 4.7.1 ,支持 ValueTupleWin11 自带 .NET 4.8
看到这个,你可能会想用个 ValueTuple 还这么麻烦,还要 Win10 1709 ,不然还要自带一个 System.ValueTuple.dll …… 其实这样说的都是很久以前的文章了。从前面的统计占比可以看出 Win10 1809 以下的系统占比都小到可以忽略,不要说 Win10 1709 了。所以这个 ValueTuple 其实可以放心地使用,不用带什么 System.ValueTuple.dll。一个例子看一下 aardio 现在调用 .NET 有多方便:import win.ui; var winform = win.form(text="DataGridView")import System.Data;var tab = System.Data.DataTable("DT"); tab.Columns.Add("名称"); tab.Rows.Add({"WangWu"}); import System.Windows.Forms;var grid = System.Windows.Forms.CreateEmbed("DataGridView",winform); grid.ColumnHeadersHeightSizeMode = 2; grid.DataSource = System.Data.DataView(tab); winform.show();win.loopMessage();
2、Win11 自带一个极重要的浏览器组件 WebView2 ( aardio 标准库中的 web.view 就是基于 WebView2 ),实际上 Win10 上 WebView2 的普及率也在快速增长。要注意 WebView2 是共享组件,有利于生成体积很小的 EXE 文件。WebView2 拥有最新的现代浏览器内核、强悍的性能,并且接口简洁,使用很方便。WebView2 到底有多好用,直接上 aardio 代码演示一下:import win.ui;var winform = win.form(text="Ping"); import web.view;var wb = web.view(winform);import process.popen;wb.external = { ping = function(domain){ var prcs = process.popen("ping "+ domain); for( all,out,err in prcs.each() ){ wb.invoke("document.body.insertAdjacentText",'beforeend',all); } return "恭喜,事做好了!" } }wb.html = /<body style="white-space: pre;"><script>doSomething = async() => { var result = await aardio.ping('www.example.com'); document.body.insertAdjacentText('beforeend',result);};</script><button onclick="doSomething()">开始干活了</ping>/winform.show();win.loopMessage();
3、Win10 1803 开始就自带了 WebView1 控件,虽然比不上 WebView2,但仍然是很强大的。从前面的桌面系统占比数据可以看出,Win10 1809 以下的系统占比其实很小,所以 WebView1 也就可以放心使用了。aardio 中的 web.sysView 扩展库就是基于 WebView1。这个 web.sysView 的接口与用法与 web.view 很像( 参考 aardio 自带范例 )。这是使用 aardio 的一个好处,很多库的用法与接口都相近,上手成本低。4、HTMLayout 是一个著名的类浏览器组件,但是更适合桌面软件界面开发,体积也非常小,且兼容 WinXP 系统。HTMLayout 的下一代产品是 Sciter,Sciter 有更好的性能,支持现代 JavaScript ,但不支持 WinXP 系统。从前面的桌面系统占比数据可以看出,现在可以放心地使用 Sciter 替代 HTMLayout 了。aardio 中的库 web.layout 基于 HTMLayout,而 aardio 扩展库 web.sciter 基于 Sciter。web.layout 与 web.sciter 的接口用法基本一样,很多东西都可以通用。 5、还有一个常常被我们低估的 IE 控件,在新版操作系统 IE 浏览器虽然被移除了,但 IE 控件却被作为系统组件保留了。从前面的桌面操作系统占比我们可以看出,IE 控件核心基本都在 IE11 以上,并且不会再发生大的变更,可以生成体积极小的 EXE,比 WebView2 更轻量。也许有人会问既然有强大的 WebView2 ,为什么还要使用 IE 控件呢?这你就错了,如果你拿 IE 控件跟我们常用的 static 控件比一下,哪个更强大呢?。难道我们因为 static 控件功能更弱就不再使用 static 控件吗?。
所以物尽其用,IE 控件仍然是好东西。aardio 标准库中的 web.form 基于 IE 控件,用法非常简单,可参考范例:6、在前面的文章中我介绍过利用 Win10 / Win11 系统自带的 Chakra.dll 执行 JavaScript ,兼容 ES6 。从上面的桌面系统占比可以看出,这个组件也可以放心地使用了。下面看范例体验一下 Chakra 的强悍性能,舒服的 ES6、箭头函数、let、const 、类 …… JavaScript 直接调用 aardio ,aardio 直接调用 JavaScript,简单粗暴不麻烦。最重要的是调用系统组件,不增加软件体积:
import web.script;var chakra = web.script("ES6"); //导出 aardio 函数到 JavaScriptchakra.external = { log = function(...){ } }chakra.script = /external.log("JavaScript 调用 aardio 函数");var test = function(arg){ let result = 0; let numbers = [1,2,3]; if(Array.isArray(numbers)){ numbers.forEach( (value) =>{ result = result + value; }); } return arg + result;}/ //调用 JavaScript 函数var ret = chakra.script.test(1000) ;
新的系统环境带来的好处不止上面这些,这里只是捡几个典型的讲一下。如果你刚开始学习 aardio ,刚开始学习桌面软件开发,说不一定等你学好了、软件也开发完成了, Win7 的那 5% 的占比也快丢光了。(图片来源网络,侵删)
0 评论