RequireJS动态路径替换
我有一个requirejs模块,用作来自不同JS文件的API的包装器: apiWrapper.jsRequireJS动态路径替换,requirejs,amd,Requirejs,Amd,我有一个requirejs模块,用作来自不同JS文件的API的包装器: apiWrapper.js define([], function () { return { funcA: apiFuncA, funcB: apiFuncB }; }); 它工作得很好,但现在我有了一些新的用例,需要替换实现,例如,代替apiFuncA调用我自己的函数。但是我不想触及代码中调用函数的其他地方,比如apiWrapper.funcA(param) 我可以这样做
define([], function () {
return {
funcA: apiFuncA,
funcB: apiFuncB
};
});
它工作得很好,但现在我有了一些新的用例,需要替换实现,例如,代替apiFuncA调用我自己的函数。但是我不想触及代码中调用函数的其他地方,比如apiWrapper.funcA(param)
我可以这样做:
define([], function () {
return {
funcA: function(){
if(regularUseCase){
return apiFuncA(arguments);
} else {
return (function myFuncAImplementation(params){
//my code, instead of the external API
})(arguments);
}
},
funcB: apiFuncB
};
});
但我觉得它看起来不太好。还有什么更优雅的选择?有没有办法动态地替换模块(apiWrapper)?目前它是在我的require.config路径定义中定义的。是否可以在运行时更改此路径定义,以便使用不同的文件作为包装器?首先,如果使用Require.js,您可能希望在生产之前构建它。因此,在运行时不要动态更新路径,也不要依赖运行时变量来定义路径,因为这将阻止您成功运行r.js 有很多工具(requirejs插件)可以帮助您动态更改模块路径或条件加载依赖项 首先,您可以使用它来根据所做的检查更改模块URL的部分(或全部),而不破坏构建 如果你要找polyfilling,有 这里列出了更多: