我有一个 requirejs 模块,它用作来自不同 JS 文件的 API 的包装器:
apiWrapper.js
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 路径定义中定义。可以在运行时更改此路径定义,以便我将使用不同的文件作为包装器吗?