在当前项目中,我需要使用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');
});
工厂里面的部分没有被执行。
我缺少什么?还有什么需要让它发挥作用吗?
答案 0 :(得分:0)
从RequireJS文档(http://requirejs.org/docs/api.html):
理想情况下,您加载的脚本将是由其定义的模块 调用define()。但是,您可能需要使用一些传统/遗留 "浏览器全局"不通过表达依赖关系的脚本 限定()。对于那些,您可以使用shim配置。要正确表达 他们的依赖。
您可以尝试使用以下内容:
requirejs.config({
...
shim: {
'suggest': {
deps: ['jquery', 'jquery-ui'],
exports: 'suggest'
}
}
...
}
您可能还需要向sugget
属性添加paths
。