【问题标题】:Requirejs configuration in different fileRequirejs配置在不同的文件中
【发布时间】:2013-09-10 07:13:37
【问题描述】:

我正在使用 requirejs。我的 main.js 内容如下。

requirejs.config({
    async: true,
    parseOnLoad: true,
    packages: [],
    paths: {
        jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min'
    }
});

require(["login"], function (loginService) {

    loginService.login('validUser');

});

现在,我的配置元素很少。但是后面我会添加包、路径等,所以require.config行会增加。

  1. 我想将 require.config 分离为不同的文件并使用它吗?
  2. 如果 jquery 加载延迟,是否会出现错误?我的其他 javascript 文件正在使用它。

【问题讨论】:

    标签: javascript jquery requirejs config


    【解决方案1】:

    是的,你可以,在你需要其他任何东西之前需要你的配置,就像这样:

    配置示例:

    require.config({
        baseUrl: '/Public/js',
        paths: {
            jquery: '../../Scripts/jquery-1.10.2.min',
            jqueryui: '../../Scripts/jquery-ui-1.10.2.min',
        },
        shim: {
            jqueryui: {
                deps: ['jquery']
            },
        }
        waitSeconds: 3
    });
    

    然后我加载它:

    require(['/Public/js/config.js'], function() {
        require(['home/index'], function() {                
        });
    });
    

    请记住,您在第一个 require 语句中通过路径引用 config.js,因为 require.js 无法通过 baseUrl 解析,因为它尚未加载。当您到达内部 require() 语句时,它已加载,您可以引用相对于 baseUrl 的依赖项。

    【讨论】:

      【解决方案2】:
      1. 你可以把配置放到一个单独的JS文件里,没问题。只需确保在主代码中调用 require() 之前加载该文件即可。

      2. 如果您将 jQuery 用于未通过 requireJS 加载的其他脚本,如果它们碰巧加载得比 jQuery 快,您将收到错误。您需要做的是将所有这些静态文件转换为 requireJS 模块,并通过 requireJS 将它们全部加载。通过在每个模块中使用define() 函数,您可以设置依赖关系,因此所有模块将在执行自己的代码之前等待 jQuery 加载。

      【讨论】:

      【解决方案3】:

      这是一个基于多页 requirejs 的项目示例,其中 requirejs.config 调用位于单独的文件中

      https://github.com/requirejs/example-multipage/tree/master/www

      【讨论】:

        猜你喜欢
        • 2017-11-16
        • 2013-08-14
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多