icestark
icestark copied to clipboard
:tiger: Micro Frontends solution for large application(面向大型应用的微前端解决方案),站点国内镜像:https://icestark.gitee.io
 
 
在使用icestarkk开启沙箱接入子应用的时,我们发现在遇到执行的js代码需要频繁访问沙箱时,会遇到明显的性能问题和卡顿。 针对此问题,笔者想到了一种解决方法: **在使用时将常用的变量进行缓存,这样相关的变量就只会访问一次沙箱,之后代码执行时就不再需要再多次重复访问沙箱。** 在后续学习中发现另一个微前端框架qiankun也在沙箱中默认开启使用类似的缓存方法来对沙箱性能进行优化,pr中的缓存的变量以及写法参考了qiankun。 下面是一个将icestark的sandbox核心代码**简化后的例子**: ``` // 简易沙箱 const sandbox = new Proxy(window, { get(target, prop, receiver) { if (prop === Symbol.unscopables) { return undefined; } console.log('访问了沙箱', prop) return target[prop]...
fix: 修复 changeState 方法调用绑定的this问题
**【问题描述】**:[[email protected]](https://github.com/webpack/webpack-dev-server/blob/master/lib/Server.js)加入了对跨域请求头的强制检测,而icestark加载css时的link标签未添加crossorigin=anonymous属性,导致在代理css资源时请求头sec-fetch-mode为"no-cors",命中了webpack-dev-server的跨域请求头拦截,导致请求资源403,无法进行调试。    控制台出现**net::ERR_ABORTED 403 (Forbidden)**错误。   看了一下appendCSS方法,不支持添加crossorigin=anonymous属性,期望支持linkAttributes,类似scriptAttributes配置。
子路由/actConfig/mgr中加载子应用未跳转,主应用为vue2,路由跳转了,显示空白,source里面发现子应用的js未被加载 ```javascript mounted() { const container = document.querySelector('.iframe'); registerMicroApps([ { name: 'waiter', activePath: '/actConfig/mgr/waiter', title: '子应用', container, url: [ 'http://192.168.140.16:8080/waiter.js', 'http://192.168.140.16:8080/style.css', ] } ]); start(); } ```  
当主应用和子应用存在路径映射时,例如/app1/page1映射到子应用的/page1,再从导航跳转其他应用再点浏览器返回键,就丢失了basename变成了/page1从而404,官网提供的demo上也有此问题,请问如何处理
### 前提: 以下在 (_本地开发运行_) 的时候都是能正常访问,且主应用加载子应用是能正常访问 异常主要出现在打包后,主应用来加载子应用时出现的错误 ### 主应用 ice应用 异常信息: ``` apps.js:287 TypeError: Cannot read properties of null (reading 'mount') at apps.js:226:1 at Array.forEach () at combineLifecyle (apps.js:225:1) at apps.js:197:1...
旧umi项目改造, 子应用的index.html和index.html内``的umi.138702b9.js加载成功, 但是 执行需要加载的其他css,js均不能加载。