10

我什么时候应该在 RequireJS 中使用pathsvs ?packages对此是否有最佳实践,或者是否有特定时间我应该考虑使用其中一个?

我已经关注了文档,我想出了这个:

// main.js
requirejs.config({
    enforceDefine: true,
    urlArgs: "bust=" + (new Date()).getTime(),
    baseUrl: "./js",
    waitSeconds: 7,
    paths: {
        "jquery":     [
                        'jquery'
                      ],
        "underscore": [
                        'underscore'
                      ],
        "backbone":   [
                        'backbone'
                      ],
        "handlebars":     [
                        'handlebars'
                      ]
    },
    shim: {
        "underscore": {
            deps: [],
            exports: "_"
        },
        "backbone": {
            deps: ["jquery", "underscore"],
            exports: "Backbone"
        },
        "handlebars": {
            deps: [],
            exports: "Handlebars"
        }
    } // End shim

}); // End config


// List all files; use 'define()' and not 'require()' because of shim
define([
    'jquery',
    'underscore',
    'backbone',
    'handlebars'
], function ($, _, Backbone, Handlebars)
   {
       console.log("$: " + typeof $);
       console.log("_: " + typeof _);
       console.log("Backbone: " + typeof Backbone);
       console.log("Handlebars: " + typeof Handlebars);
   }
); // End define

但是,我观看了 Jesse Warden 的视频(http://css.dzone.com/articles/video-basics-requirejs),他的大部分代码似乎都使用了这种风格:

// main.js
requirejs.config({
    urlArgs: "bust=" + (new Date()).getTime(),
    baseUrl: "./js",
    waitSeconds: 7,
    packages: [
                'main',
                {
                    name: 'jquery',
                    location: 'libs/jquery',
                    main: 'jquery'
                },
                {
                    name: 'underscore',
                    location: 'libs/underscore',
                    main: 'underscore'
                },
                {
                    name: 'backbone',
                    location: 'libs/backbone',
                    main: 'backbone'
                },
                {
                    name: 'handlebars',
                    location: 'libs/handlebars',
                    main: 'handlebars'
                }
    ]
}); // End config

那么正确的方法是什么?我应该使用pathsorpackages吗?此外,还有一个modules配置。我什么时候使用modules

4

1 回答 1

10

这个词packages指的是标准的CommonJS,因为 requirejs 支持加载位于 CommonJS Packages 目录结构中的模块,并且模块本身应该是 RequireJS 可以理解的模块格式。

路径配置也可以用于目录和文件(.js、requirejs 模块)。有点令人困惑,因为正如您所说,您可以使用包来加载非标准 CommonJS 包。

我什么时候使用模块?

在 requirejs 中声明的所有内容:define('name', callback); 都是一个模块

希望这个答案有帮助。

于 2013-09-21T21:02:25.773 回答