RequireJS-加载多个配置文件

RequireJS-加载多个配置文件,requirejs,Requirejs,我正在尝试加载几个RequireJS配置。在我的html中,我通过 <script src="../lib/require.js" data-main="../app/requireConfig"></script> 但是,我得到以下错误: 未捕获错误:不匹配的匿名定义()模块:函数(记录器){ 与所述问题(加载多个配置)没有直接关系,但由代码加载的组织方式引起。如手册所述: 要避免此错误,请执行以下操作: 请确保通过RequireJS API加载所有调用defin

我正在尝试加载几个RequireJS配置。在我的html中,我通过

 <script src="../lib/require.js" data-main="../app/requireConfig"></script>
但是,我得到以下错误:

未捕获错误:不匹配的匿名定义()模块:函数(记录器){

与所述问题(加载多个配置)没有直接关系,但由代码加载的组织方式引起。如手册所述:

要避免此错误,请执行以下操作:

  • 请确保通过RequireJS API加载所有调用define()的脚本。不要手动在HTML中编写脚本标记以加载其中包含define()调用的脚本
  • 如果手动编写HTML脚本标记,请确保它只包含命名模块,并且未加载与该文件中的某个模块同名的匿名模块
因此,现在的问题是,当手动加载模块时(如您所说的“文档准备就绪时”,您能否澄清引用的源代码实际上是如何加载的?),requirejs不知道模块来自何处,因此无法为其指定名称。如果模块是通过requirejs api加载的(例如,如果它出现在
define
调用的依赖项列表中,并且是requirejs本身决定了它的脚本路径,那么它会在文件后面命名模块

一般来说,建议只使用一个脚本标记加载所有requirejs管理的javascript。这使得开发设置更接近最终优化的情况(所有脚本连接在一起)。如有必要,仍可以在单个模块内调用
require.config
,并仅在文档准备就绪后执行某些代码。例如,我们的许多应用程序在其
main.js
中执行以下操作(该模块由requirejs脚本标记加载):

define(['sharedServices/logger'], function (logger) {

    function configVideo() {
        logger.info('Adding video modules');

        require.config({
            path: {

                Capabilities: 'videoProvider/Capabilities',
                VideoProviderEnums: 'videoProvider/VideoProviderEnums',
                VideoProviderCommon: 'videoProvider/VideoProviderCommon',
                VideoProviderInstance: 'videoProvider/VideoProviderInstance',
                DummyVideoInstance: 'videoProvider/DummyProvider/DummyVideoInstance'
            }
        });
    }

    return {
        configVideo: configVideo
    };

})
// sort of bootstrap config
require.config({
  packages: [{ 
    name: "our-framework",
    location: "../../our-framework/src/"
  }],
  // here some app-specific requirejs options
  waitSeconds: 5
});

// load the framework, the "our-framework/rjs-config" contains 
// framework specific requirejs config (another require.config call)
require(["our-framework/rjs-config"], function() {

  // in this context both require configs are loaded

  require(["application"], function(application) {
    application.init().run();
  });

});