编写 VBScript 扩展库这里说明一下扩展 VBScript 功能的 aardio 扩展库 web.script.json 是如何写出来的 。
首先需要了解 web.script 不仅仅是可以用于执行 VBScript,也可以用于执行 JavaScript,参考:aardio + JavaScript 快速开发桌面软件,体积小使用系统自带ES6 组件
web.script 在创建脚本解释器时,会检查 web.script.preload 名字空间下的所有扩展对象,先看一下 web.script 的构造函数的相关 aardio 代码:
import com;namespace web;class script { ctor(language = 'JScript'){{ this.msc = ..com.CreateObject("ScriptControl"); // …… 其他代码省略 this.reset = function(){ this.msc.Reset(); //脚本语言名称转为小写 var lang = ..string.lower(this.msc.Language); //遍历 web.script.preload 名字空间 for(k,v in self.preload){ //如果扩展对象的 language 表指定了对当前语言启用扩展 if(!v.language || v.language[lang]){ //执行扩展对象的 code 属性指定的脚本代码 if(v.code)this.msc.AddCode(v.code); //执行扩展对象的 init 函数 if(v.init)v.init(this.msc); } } } this.reset(); // …… 其他代码省略 }}}web.script.preload 名字空间下的扩展对象,可选指定以下三个属性:
1、属性 language 可用表对象指定支持哪些语言 。
2、属性 code 可用于指定默认加载的脚本代码 。
3、属性 init 可指定初始化执行的函数 。
然后我们再看一下 web.script.json 扩展库的 aardio 代码:
import web.json;import web.script;namespace web.script.json{};// JavaScript 扩展namespace web.script.preload.json3 { language = { javascript = true; jscript = true; } code = //省略JSON3 源码}// VBScript 扩展namespace web.script.preload.json3vbs { language = { vbscript = true; vbs = true; } init = function(msc){ msc.AddObject("JSON",{ parse = function(...){ return ..web.json.parse(...); }; stringify = function(...){ return ..web.json.stringify(...) }; }) }}
经验总结扩展阅读
- 兰蔻粉水适合混合肤质使用吗?
- 混合饲料的特点是什么?
- 鱼类饲料与肉类伺料混合词喂有什么好处呢?
- 混合型酿醋前发酵剂的属性及用途?
- 饲养黄鳝如何用混合型养殖池?
- 皇池流水混合型养殖法是怎样的?
- 乙醇和水混合后超声为什么会产生大量气泡
- 风油精和酒精混合有毒吗
- 白醋和小苏打混合后还杀菌吗
- 白醋和小苏打混合产生什么气体