Script# 0.8 对生成代码的更改也涵盖了相同的主题。
总结是生成的代码现在位于脚本模块中(实现为函数闭包),并且模块对象具有挂在其上的所有公共类型,供模块的使用者按照 AMD 模式访问。有关 AMD 模式本身的一些详细信息,请参见此处:http: //addyosmani.com/writing-modular-js/
出于说明目的,如果您的程序集对应于“foo”模块,则生成的脚本将类似于:
define('foo', ['ss'], function(ss) {
// GeneralJS_v4.Wrappers.Elements.MyElementEventHandlers
function GeneralJS_v4$Wrappers$Elements$MyElementEventHandlers(element) {
this._element = element;
this._handlersMap = {};
}
var $exports = ss.module('basic', null,
{
MyElementEventHandlers: [ GeneralJS_v4$Wrappers$Elements$MyElementEventHandlers, GeneralJS_v4$Wrappers$Elements$MyElementEventHandlers$, null ]
});
return $exports;
});
查看生成的输出并使用 ScriptTemplate 元数据属性改变输出的一个很好的例子是单元测试 - 请参阅https://github.com/nikhilk/scriptsharp/tree/cc/tests/TestCases/Basic/Simple
具有对foo
模块的引用的调用者将能够访问您的类型,foo.MyElementEventHandlers
即使用 object.member 样式。
例如:
require(['foo'], function(foo) {
var o = new foo.MyElementEventHandlers(...);
});
除了单元测试之外,这也显示在 github 存储库中的各种示例中,这些示例显示使用生成的脚本与 script# AMD 脚本加载器(AroundMe 示例),更知名的 requirejs AMD 加载器(KOWorld 示例) ,以及不使用 AMD 模式(FishTank 示例)。
希望有帮助。