我希望将Require.JS集成到我的项目中,这需要能够根据客户端切换依赖项。
目前我有一些使用网络工作者执行的后台处理,将来我希望选择在服务器上执行处理,这只需要更换模块。
目前我唯一能想到的方法是在我的主脚本文件中包含以下伪代码:
var modules = [];
// This would be done with Modernizr or with a simple hasOwnProperty check
if(window.hasFeature('web-workers') {
modules = ["other-dependencies", "webworker-calc"];
} else {
modules = ["other-dependencies", "server-calc"];
}
require(modules, function (deps, calc) { // Code goes here };
这样做有更干净的方法吗?我可以比上面的例子更多地利用Require.JS吗?
答案 0 :(得分:3)
您可以通过以太方调用require.config
来设置require.js的配置,或者在获取require.js源文件之前设置全局require对象:
require.config({
paths: {
'calc-lib': window.hasFeature('web-workers') ? 'webworker-calc' : 'server-calc'
}
});
或者:
<script>
var require = { paths: {...} }
</script>
<script src="require.js" data-main="script/main"></script>
然后以“正常”方式和r.js可压缩方式要求它:
require(["other-dependencies", "calc-lib"], function (deps, calc) {
// Code goes here
});
只要两个文件的“api”相同,您就不必采取任何其他预防措施。