Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Requirejs一个文件中的多个模块_Javascript_Module_Requirejs - Fatal编程技术网

Javascript Requirejs一个文件中的多个模块

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会出现错误未捕获错误:脚本错误:模块/另一个模块 目录结构: |-

我需要从一个文件中使用2个模块

index.html


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'],
有多种方法可以降低成本,但有两种主要方法值得关注:

  • RequireJS在开始尝试加载
    模块/另一个模块之前完全加载
    模块/消息
    。当它到达第二个模块时,它已经有了一个
    定义
    。一切都很好

  • RequireJS首先开始加载
    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
    之前加载。