我正在处理的项目使用requireJS。效果很好,当我们想要构建它时,我们使用:
({
// ..
namespace: 'projectCodeName',
// ..
});
但我有时需要加载另一个也使用requireJS的库,但不会将其命名为:(
)。
我制作,我没有任何问题,因为requirejs
可以访问我自己的window.projectCodeName.require()
。
但是在开发中,没有任何工作符合预期。
我发现我可以构建requireJS without uglyfying,但是遗憾的是,丢失文件匹配,行号等是很可惜的。
我可以在开发模式下使用requireJS和命名空间。类似的东西:
<script data-namespace="projectCodeName" src="bower_components/requirejs/require.js"></script>
干杯
编辑:
我尝试手动执行此操作:
window.projectCodeName = window.projectCodeName || {};
window.projectCodeName.require = window.require;
window.projectCodeName.requirejs = window.requirejs;
window.projectCodeName.define = window.define;
delete require;
delete requirejs;
delete define;
不幸的是后者delete require
不起作用,它返回false,这意味着这是non-configurable property。
我认为requirejs非常擅长避免全局命名空间问题,但它却不断带来麻烦。这真令人讨厌和失望。
答案 0 :(得分:0)
有multiversion support in requirejs,因此您可以为每个项目设置上下文。这是doc页面中的一个示例。这是你想要的吗?
var reqOne = require.config({
context: "version1",
baseUrl: "version1"
});
reqOne(["require", "alpha", "beta",],
function(require, alpha, beta) {
log("alpha version is: " + alpha.version); //prints 1
log("beta version is: " + beta.version); //prints 1
setTimeout(function() {
require(["omega"],
function(omega) {
log("version1 omega loaded with version: " +
omega.version); //prints 1
}
);
}, 100);
});
var reqTwo = require.config({
context: "version2",
baseUrl: "version2"
});
reqTwo(["require", "alpha", "beta"],
function(require, alpha, beta) {
log("alpha version is: " + alpha.version); //prints 2
log("beta version is: " + beta.version); //prints 2
setTimeout(function() {
require(["omega"],
function(omega) {
log("version2 omega loaded with version: " +
omega.version); //prints 2
}
);
}, 100);
});