9

我正在使用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 文件正在使用它。
4

3 回答 3

14

是的,您可以在需要其他任何内容之前先要求您的配置,如下所示:

配置示例:

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 的依赖项。

于 2014-04-16T16:06:53.367 回答
1
  1. 您可以将配置放入单独的 JS 文件中,这不是问题。只需确保在主代码中的require()调用之前加载该文件。

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

于 2013-09-06T08:50:58.213 回答
0

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

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

于 2013-09-06T14:43:23.343 回答