window的使用"/>
微前端(十一)子应用注意window的使用
子应用切记禁慎 window对象的使用
类似这种代码
queryAllAccounts:`${window.projectName.loginDes}/component/allTenant`,
这种代码开发可能是ok的,但放入到乾坤后发现代码不好使了。
原因就是window对象的使用,因为放入乾坤后的window是主应用的window对象了,而不是子应用的window。
解决方案:
1、则需要将window.projectName对象注册到主应用才行。
2、最好的做法还是子应用尽量不要使用window对象来获取自定义的对象。
再就是window对象也会存在这个问题
比如:
function _closeMoreQueryById(targetObj, moreQueryPanelId) {$("#" + moreQueryPanelId).removeClass("fadeInRight").addClass("fadeOutRight");setTimeout(function () {$("#" + moreQueryPanelId).hide();$(".more-query-cover").remove();}, 300);$(targetObj).hide();
}
window._closeMoreQueryById=_closeMoreQueryById;
再通过
$(`<div class='page-cover more-query-cover' style="z-index: ${GoingUtils.getCurMaxZIndex()}" onclick="window._closeMoreQueryById(this,'${moreCtl.moreQueryPanelId}');"></div>`).appendTo($("#" + moreCtl.moreQueryPanelId).parent());
这种代码也是执行不了的。
解决方案:
1、当然就是不要写这种js代码,改成vue的事件方式
2、如果感觉改动太大,那就把代码放到main框架端去。
如果立即执行的代码比如window.a=a; 这时候的window是子应用,如果是按钮里面触发的window.b这时候的window是主应用。
如果你按钮里面再想获取window.a则就没有了,因为window对象已经变化了
更多推荐
微前端(十一)子应用注意window的使用
发布评论