【发布时间】:2013-10-21 15:43:37
【问题描述】:
我有一个 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 路径定义中定义。是否可以在运行时更改此路径定义,以便我使用不同的文件作为包装器?
【问题讨论】: