- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自定义qiankun样式scoped规则
1、HTML Entryqiankun 通过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 =
您可能关注的文档
最近下载
- 普儿6月份静脉置管的护理.docx VIP
- 2025团校入团考试精选100题题库(含答案).docx VIP
- 手术部位标识制度 考试.docx VIP
- 《第六届粤东地区神经外科高级护理实践研讨班》调查表及试题.docx VIP
- 南京大学2020-2021学年第2学期《细胞生物学》期末考试试卷(A卷)含标准答案.docx
- 医疗器械采购投标方案.docx VIP
- 电大(精新编版)《中国当代文学专题》期末综合练习题及答案参考资料小抄(含全部题型,按拼音整理好)__2017年度.doc VIP
- 机械制图 第3版 郭克希 ch12新.ppt VIP
- 黄淮海平原农地流转空间分布与格局特征-资源科学.pdf VIP
- 普外科5月份西医考试.docx VIP
原创力文档


文档评论(0)