微前端实战看这篇就够了

编程入门 行业动态 更新时间:2024-10-22 15:39:17

微前端实战看<a href=https://www.elefans.com/category/jswz/34/1769022.html style=这篇就够了"/>

微前端实战看这篇就够了

wl-micro-frontends [wl-qiankun]

本项目采用 vue + qiankun 实践微前端落地。
同时qiankun是一个开放式微前端架构,支持当前三大前端框架甚至jq等其他项目无缝接入。
此项目为了尽可能的简单易上手,以及方便文章讲解,大部分逻辑都在主应用和子应用的main.js来回施展,
实际项目应用可不要如此粗暴,要有优雅的架构设计。

在线地址

项目启动

npm run cinit
npm run init
下载依赖,因为是批量下载所有应用下的依赖,推荐cinit节省下载时间npm run serve 
运行项目,同样,批量运行所有应用会耗时较久,浏览器页面自动打开后请稍家等待,然后刷新即可npm run build
打包项目,打包所有应用

微前端 qiankun

微前端是什么、为什么要做微前端、qiankun是什么这些笔者将不再叙述。(文末有彩蛋~)
传送门:可能是你见过最完善的微前端解决方案 & qiankun
下面直接进入实战教程。

实战教程目录详解

鉴于qiankun文档只有寥寥十几行,这里做一个尽量详细的实战示例描述:

  • 微前端主应用与子应用如何构建
  • 主应用与子应用通信(静态,无法监测到值变化)
  • 主、子,各应用间动态通信(动态,各应用间实时监听,同步数据)
  • 主应用资源下发至子应用
  • 微前端鉴权方案
    • 一:异步注册(主应用异步获取子应用注册表并将子应用对应的路由下发至子应用)
    • 二:异步路由(使用应用间通信,通知子应用路由数据,子应用在内部addRoutes异步插入路由)
  • 各应用间路由基础管理
  • 公共资源处理

微前端主应用与子应用如何构建

构建主应用

  1. 创建一个主项目工程目录
  2. npm install qiankun 下载微前端方案依赖
  3. 改造主项目:

在main.js中

    // 导入qiankun内置函数import {registerMicroApps, // 注册子应用runAfterFirstMounted, // 第一个子应用装载完毕setDefaultMountApp, // 设置默认装载子应用start // 启动} from "qiankun";let app = null;/*** 渲染函数* appContent 子应用html* loading 如果主应用设置loading效果,可不要*/function render({ appContent, loading } = {}) {if (!app) {app = new Vue({el: "#container",router,store,data() {return {content: appContent,loading};},render(h) {return h(App, {props: {content: this.content,loading: this.loading}});}});} else {app.content = appContent;app.loading = loading;}}; /*** 路由监听* @param {*} routerPrefix 前缀*/function genActiveRule(routerPrefix) {return location => location.pathname.startsWith(routerPrefix);}// 调用渲染主应用render();// 注册子应用registerMicroApps([{name: "vue-aaa"entry: "//localhost:7771",render,activeRule: genActiveRule("/aaa")},{name: "vue-bbb"entry: "//localhost:7772",render,activeRule: genActiveRule("/bbb")},],{beforeLoad: [ app => {console.log("before load", app);}], // 挂载前回调beforeMount: [app => {console.log("before mount", app);}], // 挂载后回调afterUnmount: [app => {console.log("after unload", app);}] // 卸载后回调})// 设置默认子应用,参数与注册子应用时genActiveRule("/aaa")函数内的参数一致setDefaultMountApp("/aaa");// 第一个子应用加载完毕回调runAfterFirstMounted(()=>{});// 启动微服务start();

注意, 主应用的el绑定dom为#container,因此你也需要修改一下index.hrml模板中的id

在app.vue中,增加一个渲染子应用的盒子

    <template><div id="root" class="main-container"><div class="main-container-menu"></div><!-- 子应用盒子 --><div id="root-view" class="app-view-box" v-html="content"></div></div></template><script>export default {name: "root-view",props: {

更多推荐

微前端实战看这篇就够了

本文发布于:2024-02-06 16:15:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750389.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:这篇   实战   就够了

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!