以前的H5页面,通过<script>标签动态引入了jweixin-1.3.0.js。而后做功能升级的时候,需要动态引用jweixin-1.6.0,采用AMD方式,但一直引入不成功。经过review代码发现,是因为jweixin代码中有个
if(!window.jWeixin) { ... }
根据这个情况,在进行AMD加载前删除了jWeixin,即可正确导入模块。
delete window.jWeixin
loadScript('jweixin-1.6.0', jweixin => { ... })
我能理解在使用<script>标签引入的时候,这个条件判断的作用;但感觉作为AMD的模块,与全局环境不能充分解耦,就失去了模块化的本意。而且由于调用是个异步过程,delete之后、load返回之前,是否会产生的其他影响就是个盲区了。
建议优化。