自定义qiankun样式scoped规则.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自定义qiankun样式scoped规则 1、HTML Entry qiankun 通过HTML Entry 的方式来解决JS Entry带来的问题 2、样式隔离 采用shadow dom 包裹没一个微应用,从而确保微应用的样式互不干扰 采用css scoped 方式(实验性)动态改写 css 选择器来实现 3、运行时沙箱 qiankun的运行时沙箱分为 JS 沙箱和样式沙箱 4、资源预加载 qiankun 实现预加载的思路有两种,一种是当主应用执行 start 方法启动 qiankun 以后立即去预加载微应用的静态资源,另一种是在第一个微应用挂载以后预加载其它微应用的静态资源,这个是利用 single-spa 提供的 single-spa:first-mount 事件来实现的 5、应用间通信 qiankun 通过发布订阅模式来实现应用间通信 示例项目 官网地址 源码地址 yarn examples:install yarn examples:start qiankun 提供了6种实例,vue、vue3、react15、react16、angular9、purehtml。 image.png 主应用在 examples/main 目录下,提供了两种实现方式,基于路由配置的 registerMicroApps 和 手动加载微应用的loadMicroApp。通过 webpak.config.js 的 entry 可以知道有两个入口文件 multiple.js 和 index.js。 1、基于路由配置 在 examples/main/index.js 中,将微应用关联到一些 url 规则,实现当浏览器 url 发生变化时,自动加载相应的微应用。主应用可以使用react进行运行,也可以使用vue进行运行。 registerMicroApps( [ { name: vue, entry: //localhost:7101, container: #subapp-viewport, loader, activeRule: /vue, }, ], { beforeLoad: [ app = { console.log([LifeCycle] before load %c%s, color: green;, ); }, ], beforeMount: [ app = { console.log([LifeCycle] before mount %c%s, color: green;, ); }, ], afterUnmount: [ app = { console.log([LifeCycle] after unmount %c%s, color: green;, ); }, ], }, ); 2、手动加载微应用 在 examples/main/multiple.js 中有loadMicroApp实现的例子 function mount() { app = loadMicroApp( { name: react15, entry: //localhost:7102, container: #react15 }, { sandbox: { experimentalStyleIsolation: true } }, ); } vue微应用引入,需要修改 vue.config.js 和 mian.js 、public-path.js { ... // publicPath 没在这里设置,是通过 webpack 提供的全局变量 __webpack_public_path__ 来即时设置的,/guides/public-path/ devServer: { ... // 设置跨域,因为主应用需要通过 fetch 去获取微应用引入的静态资源的,所以必须要求这些静态资源支持跨域 headers: { Access-Control-Allow-Origin: *, }, }, output: { // 把子应用打包成 umd 库格式 library: `${name}-[name]`, // 库名称,唯一 libraryTarget: umd, jsonpFunction: `webpackJsonp_${name}`, } ... } let router =

文档评论(0)

个人文库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档