一个requirejs.config文件用于多个项目

时间:2013-09-02 07:52:11

标签: javascript requirejs

我试图弄清楚如何使用require.js创建一个好的实用程序库。我正在开发许多使用许多相同模块/工具的小项目。

让我感到困扰的是每次我开始一个新项目时,我都必须在我的主文件中创建一个新的require.config。即使每个项目的垫片和路径都相同。

除了每个项目需要的几个设置外,有没有办法在我的主文件中包含默认的requirejs.config文件?所以它看起来像这样(不确定它是否是正确的方法):

requirejs.config({
    baseUrl: "./",
    mainConfigFile: '../some/path/to/the/large/require.config.js'
    path: 'some/specific/paths/to/this/project'
});

require(['something'], function (Something) {

        new Something();

    }
);

然后'../some/path/to/the/large/require.config.js',包含我在所有项目中需要的设置。

希望这是有道理的......

1 个答案:

答案 0 :(得分:2)

我有同样的问题,这是我的解决方案。首先,我在config.js中创建了helper对象:

;
(function(window) {
    window.require_config = window.require_config || {};
    var config = window.require_config.config = window.require_config.config || {};
    var cfg = {
        baseUrl: "",
        paths: {},
        shim: {}
    };

    config.addPath = function(key, path) {
        cfg.paths[key] = path;
        return this;
    };

    config.addShim = function(key, shim) {
        cfg.shim[key] = shim;
        return this;
    };

    config.setBaseUrl = function(baseUrl) {
        cfg.baseUrl = baseUrl;
        return this;
    };

    config.build = function() {
        return cfg;
    };
})(window);

然后我创建了常见配置(在我的情况下,我只有共同的基本URL):

;
(function (window) {
    var config = window.require_config.config;

    config.setBaseUrl('/Scripts');
})(window);

我还为jQuery,jQuery UI和其他库创建了单独的配置。

;
(function (window) {
    var config = window.require_config.config;

    // check for existing jQuery
    var jQuery = window.jQuery;

    // check for jQuery 
    if (!jQuery) {
        config.addPath("jquery", ['//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min', 'jquery-1.10.2.min']);
    } else {
        define('jquery', [], function () { return jQuery; });
    }
})(window);

它使我更容易管理jQuery版本更改。所以我只在一个地方更改版本。

接下来就是在页面上连接所有内容:

<script type="text/javascript" src="/Scripts/require.min.js"> </script>
<script>
    require(['/Scripts/Config/config.js'], function() {
        require(['/Scripts/Config/common-config.js',
                '/Scripts/Config/jquery-config.js',
                '/Scripts/Config/knockout-config.js',
                '/Scripts/Product/product-config.js'], function() {
                    require(['/Scripts/Product/main.js']);
                });
    });
</script>

首先,我包含require.js本身,然后需要我的帮助脚本,因为它应该首先加载。然后我需要所有配置脚本(库脚本配置和我的特定应用程序配置 - product-config.js),之后我需要我的应用程序脚本,因为它依赖于所有以前的脚本。

在应用程序脚本(我的示例中为main.js)中,首先要在require.js中构建和设置配置:

  var config = window.coop.config;
  require.config(config.build());