问题简述qiankun 是一个微前端框架,可以有效地隔离主应用及各个子应用之间的运行环境,使得 window 对象不会被污染,但它并不是一个绝对安全的沙箱环境,子应用可以通过一些 “特殊技巧” 绕过沙箱。所以,如果大家遵守一定的约束和规范,qiankun 可以很好发挥作用,否则就会出现很多问题。手动加载 scriptqiankun 会通过 import-html-entry 组件,预先获取 html 文本流,然后分别收集样式表(link 标签和 style 标签)和脚本(script 标签),然后在 proxyWindow 中执行 js 脚本,但是手动加载的脚本不会被收集到:// app entry let script = document.createElement('script'); script.innerText = `window.nanote = 'running';` document.body.append(script); // main console.log(window.nanote) // running也可以将上述代码中的 script.innerTe

关于 Nanote 的思考结构模型思想斗争共进行了四个版本,它们的图示如下版本 1插件与 Electron 直接通信,导致 ipc 接口泄露版本 2接入 qiankun 沙盒模型,但插件可以控制 props,伪造 appName版本 3 <current>nanote-api 做中间代理掌握 props,但插件仍可以通过篡改源码的方式伪造 appName,甚至直接无视 nanote-api版本 4 不再考虑,将跳过此版本nanote-api 在插件开发时可引入,打包时必须去除,运行时动态引入⭐ 版本 5 <future>考虑直接使用 iframe 而不是 qiankun,因为它原生的 JS、CSS 隔离机制是最好的,之前使用 qiankun 是因为安全问题,现在可以模仿类似机制,通过 fetch 方法获取它的资源引用,最后把 nanote-api 注入,创建虚拟环境并执行既创建了良好的隔离环境,又避免了接口被篡改,同时取到了 qiankun 和 iframe 的优点简要描述:首先通过 import-html-entry 获取页面的 html 模板、样式表、脚本,