0

我试图弄清楚如何使用 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”包含我在所有项目中需要的设置。

希望这是有道理的...

4

1 回答 1

2

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

;
(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());
于 2013-09-02T08:09:17.793 回答