我试图弄清楚如何使用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',包含我在所有项目中需要的设置。
希望这是有道理的......
答案 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());