我有同样的问题,这是我的解决方案。首先,我在 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());