2

我有一个用 dart2js 编译的应用程序(Dart SDK 版本0.6.13 .0_r25630),我想在每次需要时用 RequireJS 加载它。

首先,感谢上帝在编译的 javascript 中提供了包装函数,但在我的情况下还不够:(

我使用requirejs加载dart2js应用程序

 require(["application.dart"], function () {});

但我想处理何时启动应用程序。例如点击事件。

require(["jQuery","application.dart"], function (jQuery,$) {
        jQuery(element).click(function(){
           $.startRootIsolate($.main$closure);
        })

});

我破解了编译后的 Javascript,但我想知道它是否可以以本机方式进行。

在 application.dart.js 中,我将函数包装在 AMD 模块中

(function (factory) {
if (typeof define === 'function' && define.amd) {
    // AMD. Register as anonymous module.
    define([],function(){
        return factory();
    } );
} else {
    // Browser globals.
    factory();
}
})(function($) {...})

然后我返回 $ 对象

return $;

最后我评论了我发现的这行代码

$.startRootIsolate($.main$closure);

感谢大家

马可

4

1 回答 1

0

我怀疑这是可能的,而无需像您那样破解代码。然而,Dart 1.6 增加了对延迟加载的支持,这可能会为您提供另一种方式来做您需要的事情?

http://news.dartlang.org/2014/08/dart-16-adds-support-for-deferred.html

于 2014-09-14T14:15:59.077 回答