我有一个模块,其中包含两个读取功能。一个使用FileReader,另一个使用XHR读取文件。单页面应用程序的不同模块使用此模块。
我希望能够运行该应用只使用其中一个。有没有办法通过data-main js文件中的require.config来做到这一点?理想情况下,通过url参数设置的标志(例如?mode = file | xhr)可用于此设置。
请参阅下面的当前模块代码,其中公开了两个功能。其他模块使用它但开发人员必须在两个功能之间手动切换。而不是当模块第一次加载时,我想只公开一个读取函数,所有其他模块使用它而不知道引擎盖下使用的是什么。公开内容的条件来自app设置或url param。
define(['somedep'], function(somedep) {
function fileReader(){...};
function xhrReader(){...};
return {
fr: fileReader, xr: xhrReader
}
}
答案 0 :(得分:0)
如果我正确阅读 - 我应该说它高度依赖于“app parameters”的含义,你可以在模块中进行条件检查。
define(['somedep'], function(somedep) {
function isXHR(){
// do your testing logic (parese the URL | look for the app parameters) such that you can return a boolean
return boolean_test_result;
};
function fileReader(){...};
function xhrReader(){...};
if ( isXHR() ){
return {
new_consolidated_method_name: xhrReader
};
} else {
return {
new_consolidated_method_name: fileReader
}
}
}
isXHR
函数可以很容易地isFile
;关键是这是一个二元决策,可以表示为boolean
并解释为true
。无论条件是false
,您都可以推断正面是new_consolidated_method_name
。引入fr
意味着您必须重构依赖于使用xr
或if(null == we.getAttribute("alt")){ }
的模块/方法,但您也可以自己测试在所有这些实例中使用哪些模块/方法。