define([
'./hack.js'
],function(h){
// 针对trident平台的处理逻辑
NEJ.patch('TR',function(){
// TODO
});
// 针对gecko平台的处理逻辑
NEJ.patch('GR',[
'./hack.firefox.js'
],function(fh){
// TODO
});
// 针对IE6平台的处理逻辑
NEJ.patch('TR==2.0',['./hack.ie6.js']);
// 针对IE7-IE9的处理逻辑
NEJ.patch('3.0<=TR<=5.0',function(){
// TODO
});
// 这里必须同hack.js文件的返回值一致
return h;
});
最后我们只需要配置产品的目标平台即可输出平台对应的适配,而不会存在其他平台的额外影响:
<script src="/path/to/nej/define.js?p=wkgktd">
<script src="/path/to/nej/define.js?p=cef">
平台变更
通过以上实现举例我们可以看到当平台发生变更时我们可以快速进行扩展或缩减
平台扩展
当有新平台需要作为系统目标平台时,我们只需要做以下工作:
增加平台配置识别符,如nxw
识别该平台与标准存在的差异,增加平台特有业务逻辑至patch
系统对平台配置部分增加新添的识别符,如
原平台适配:<script src="/path/to/nej/define.js?p=wkgktd">
新增平台适配:<script src="/path/to/nej/define.js?p=wkgktdnxw">
即可完成对平台的扩展,而不会影响到原有的业务逻辑。
平台缩减
当系统适配的目标平台由于某种原因退出历史舞台时,系统也需要将该平台的冗余代码从系统中剔除,我们只需要做以下工作:
系统对平台配置部分删除要剔除的平台标识,如:
原平台适配:<script src="/path/to/nej/define.js?p=wkgktd">
缩减后平台适配:<script src="/path/to/nej/define.js?p=wk">
即可完成对平台的缩减,而无需修改任何业务逻辑。
以上即是有关平台可扩展性的介绍。下一篇将阐述模块的可扩展性,敬请期待!
本作品采用知识共享署名 4.0 国际许可协议进行许可。