0

我正在通过以下方式加载(通过requirejs)(最新版本的)灰尘和灰尘助手

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        ... //my other dust custom helpers
    });
});

一切正常 - 我能够利用灰尘/灰尘辅助逻辑。但现在我想利用灰尘微粒如果帮助并尝试了以下

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        require(["./Scripts/dustmotes-if"], function () {
            ... //my other dust custom helpers
        });
    });
});
  • 但是 - 它到达“require([”./Scripts/dustmotes-if“],function(){”行并跳到末尾(右花括号)而不进入内部执行“我的其他灰尘自定义助手” .注意我已经检查了文件路径是OK的。

我还尝试删除“require([”./Scripts/dustmotes-if”],function(){”逻辑并简单地替换为“require([”./Scripts/dustmotes-if“]);” -尽管代码执行了,但“if”助手并未加载到助手集合中,因此在灰尘代码中引用“if”助手会导致“助手 'if' 不存在”。

有没有人试过这个或有任何想法。http://www.dustjs.com/上的参考资料并没有真正涵盖上述情况——同样,网上的许多文档/论坛帖子都参考了旧版本的dustjs 和 requirejs

4

1 回答 1

0

正如@Interrobang 所建议的那样,问题是它应该作为 IIFE 加载。

需要注意的几点

  • 由于 IIFE 在它自己的范围内运行并且需要作为参数传递的灰尘对象,我将灰尘对象分配给窗口对象(见下文)
  • dustmotes-if 引用了旧版本的灰尘库,因此必须对其进行更改 - 从“...require('dustjs-linkedin')...”到“...require('dust-full')。 ……”。

所以最终的代码如下

...
define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        window.dust=dust;
        $.getScript("./Scripts/dustmotes-if.js")
        .done(function(script,textStatus) {
            console.log(textStatus);
        })
        .fail(function(jqxhr,settings,exception) {
            console.log('Triggered ajaxError handler:'+exception.message);
        });
        ...

在dustmotes-if.js中

...
})(typeof exports !== 'undefined' ? module.exports = require('dust-full') : dust);
于 2016-05-14T07:57:22.140 回答