Requirejs static included脚本回调没有被执行

时间:2016-06-07 07:18:21

标签: javascript jquery callback requirejs

在当前项目中,我需要使用RequireJS和动态包含的模块,以及静态包含的javascripts。

每个页面都需要包含静态的脚本,并在开发过程结束时进行连接。这些是例如jQuery jQueryUi和一些像autosuggest脚本的脚本。

动态部分仅用于某些页面,例如配置程序,它需要额外的脚本才能在每个页面上加载。这就是为什么这个脚本作为一个模块加载到需要它的页面上的原因。

虽然jQuery和jQueryUi运行良好,并且由于工厂方法的执行方式而可用作amd模块:

(function(t){
    "function"==typeof define&&define.amd?define('jquery-ui',["jquery"],t):t(jQuery)
})(function(t){...});

autosuggest部分不适用。虽然我以完全相同的模式添加了功能:

(function(t){
    "function"==typeof define&&define.amd?define('suggest',['jquery','jquery-ui'],t):t(jQuery)
})(function(t){
    console.log('yeah');
});

工厂里面的部分没有被执行。

我缺少什么?还有什么需要让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

从RequireJS文档(http://requirejs.org/docs/api.html):

  

理想情况下,您加载的脚本将是由其定义的模块   调用define()。但是,您可能需要使用一些传统/遗留   "浏览器全局"不通过表达依赖关系的脚本   限定()。对于那些,您可以使用shim配置。要正确表达   他们的依赖。

您可以尝试使用以下内容:

requirejs.config({
    ...
    shim: {
        'suggest': {
            deps: ['jquery', 'jquery-ui'],
            exports: 'suggest'
        }
    }
    ...
}

您可能还需要向sugget属性添加paths