Javascript Requirejs一个文件中的多个模块
我需要从一个文件中使用2个模块 index.html:Javascript Requirejs一个文件中的多个模块,javascript,module,requirejs,Javascript,Module,Requirejs,我需要从一个文件中使用2个模块 index.html: main.js: require(['modules/message','modules/other module'],函数(message,anotherModule){ 警报(异常模块); }); 模块/message.js: define(函数(){ 返回“你好!”; }); 定义('另一个模块',函数(){ 回复“你好!”; }); 由于某些原因,Chrome会出现错误未捕获错误:脚本错误:模块/另一个模块 目录结构: |-
main.js:
require(['modules/message','modules/other module'],函数(message,anotherModule){
警报(异常模块);
});
模块/message.js:
define(函数(){
返回“你好!”;
});
定义('另一个模块',函数(){
回复“你好!”;
});
由于某些原因,Chrome会出现错误未捕获错误:脚本错误:模块/另一个模块
目录结构:
|- appDirectory
|-- app
|--- modules
|---- message.js
|--- main.js
|--- require.js
|-- index.html
所以问题是:如何仅使用一个require表达式从一个文件加载两个模块?这可能吗?代码的问题是,当您使用
定义
命名模块时,您必须为该模块指定要使用的全名。所以应该是define('modules/other module')
但这不是唯一的问题。您需要这样:
require(['modules/message', 'modules/another-module'],
有多种方法可以降低成本,但有两种主要方法值得关注:
模块/另一个模块之前完全加载模块/消息
。当它到达第二个模块时,它已经有了一个定义
。一切都很好
modules/other module
。因此它将获取名为modules/other module.js的文件,但找不到该文件,这将导致错误
require
调用本身不会对传递给它的依赖项施加任何顺序。因此,RequireJS完全可以按照它想要的顺序开始加载模块。您可以通过在运行时配置中使用来解决第二个问题。例如:
bundles: {
"modules/message": [ "modules/another-module" ]
}
因此,在这里,我理解的一个重要点是,加载依赖项时没有顺序。传递给
require
的模块列表没有定义顺序。只有通过define
调用才能创建顺序。如果调用require(['a','b'])
和a
在传递给define
的依赖项中列出b
,然后b
必须在a
之前加载。