Jack Zhang

Results 29 comments of Jack Zhang

> 看你的截图,应该是样式隔离的代码,你的css有多大? 我们这有 30 几个子应用,有 JS 执行时间较长的也有 CSS 执行时间较长的 ![1-4](https://user-images.githubusercontent.com/19297757/180157511-334c7eb2-e62b-425b-a554-66a511793f7a.png) ![1-3](https://user-images.githubusercontent.com/19297757/180157534-08ee5264-d2b9-4d70-a527-260d32a70898.png) ![1-2](https://user-images.githubusercontent.com/19297757/180157552-7290a09c-275a-459f-aba8-de0846562ada.png)

> 思路很好,对于子应用的css和js的处理,确实可以拆分成小单元执行 简单写了一下代码,首先将 一次性执行所有 JS 链接改为分开分开执行,然后再将 `bindScope` 和 `runCode2InlineScript / runCode2Function` 分开。 效果整体还行,但是由于单个 JS 本身执行时间长,导致还是会有卡顿的问题,确实没发解决。 ![优化前](https://user-images.githubusercontent.com/19297757/181698771-eba0a1b4-2ac6-40ec-9dad-c3256b4a7869.png) ![优化后](https://user-images.githubusercontent.com/19297757/181699271-abaa7a64-8e4c-43c1-bfa6-3d1e9e2b8fd1.png)

> 子应用中 window.a= 1; window.rawWindow.b = 1; 打印window window = { a:1, b:1, rawWindow: {b:1} } 为什么window.rawWindow.a是 undefind 因为被沙箱隔离了呀,微前端的一个重要作用不就是沙箱吗,最后被代理到 `proxyWindow` 也就是 `window.rawWindow.__MICRO_APP_PROXY_WINDOW__` 而不是 `rawWindow` 上,没有泄漏到全局

![image](https://user-images.githubusercontent.com/19297757/180191465-1472389b-6cab-4799-a67b-4e4e27946769.png) 涉及到公司代码,不能随便发 😂 但里面有很多 `replace` 的逻辑,原因是,我们希望子应用尽可能少的改造,所以主应用做了很多的兼容,尤其是有 `angular 1.x` 代码处理比较多。

> 以后会增加一个选项,让开发者选择是否需要缓存数据 嗯嗯,明白。确实会出现同一个链接,不同时间点的请求,确实可能不一样。 增加一个选择可以,缓存最终的结果,而不是最初的内字符串内容。

> Content-Security-Policy 刚刚跑 Nginx 测试了一下,大佬说的这个好像并不正确,改用 `script` 执行的方式并不能完全解决这个问题,假如其设置的为 `default-src` 或者设置了 `script-src` 一样会限制,如果仅设置了 `connect-src` 则不会受影响。 那么怎么解决呢?答案很简单,就是在 Nginx 加上被限制的域名即可。

写了一篇入门文章,可以看看:https://juejin.cn/post/7018497647832989709

写了一篇文章,可以看看:https://juejin.cn/post/7018497647832989709

> 在什么情况下比较好用,为什么要用这个。 写了一篇文章,可以看看:https://juejin.cn/post/7018497647832989709

我遇到了,而且是百分之百复现,具体表现如下: ![1](https://user-images.githubusercontent.com/19297757/133969971-df48903b-15ff-4f36-926f-0fa74708274e.gif) 复现步骤如下: - 使用定位小组件; - 用户首次定位(可以用隐身默认模拟) - 点击定位,不就就会报错 - 再次点击即可获取。 期望 在报错时,能触发 `onLocationError` 的回调(目前没有),或者重新请求一次(我实验的是,重点一次就可以了,不知道重新请求一次会不会好)。