微前端架构作为一种前端开发的架构方法,已经变得越来越流行,这应该也会成为这几年开发项目的主流架构。在谈论一个架构怎么实现前,或许我们应该先谈谈它是什么、好不好、为什么要用它。
本文就对微前端架构的优势到微前端的实现进行阐述。
了解后端开发的同学应该听说过微服务架构,而微前端和微服务是一个道理,都是通过拆分单体应用程序为独立的、可以独立开发、部署和运行的小型应用来提高可维护性和团队的灵活性。微前端的关键概念有以下几个:
结合在实际开发工作中,我们还需要结合开发团队人员配置来协调完成开发任务,所以这里会从真实开发的角度出发介绍微前端的优势。
Vue
,有的喜欢用React
,JS
和TS
的使用也各有偏好。微前端相对独立的应用恰好可以解决这一问题。微前端架构的部署涉及将独立开发的微前端应用集成到一个整体应用中,以便在用户访问时能够无缝地展现。以下是微前端架构的部署过程的一般步骤:
Webpack
、Parcel
等,将每个微前端应用打包成独立的部署单元。并且,要有各自的版本管理机制。发布新版本时,确保生成能够独立运行的构建文件,并将构建文件部署到适当的环境。Redux
,或者其他适当的解决方案。以上步骤是一般的微前端部署流程,具体的实现方式会因架构和工具选择的不同而有所差异。在部署之前,最好进行充分的测试和验证,确保各个微前端应用能够协同工作并在生产环境中表现良好。
single-spa
是一个目前流行的开源微前端框架。它可以使用不同的前端框架(如React
、Angular
、Vue
等)来开发独立的微前端应用。single-spa
通过劫持路由的方式来做子应用之间的切换,接入方式要融合自身的路由。这里给出基于Vue3的构建部署过程:
Vue CLI
创建一个新的 Vue 3 微应用项目。vue create micro-app-vue3
single-spa-vue@^2.0.0
版本。npm install single-spa single-spa-vue@^2.0.0
vue.config.js
文件中,配置 publicPath,确保它是微应用在单独部署时的路径。module.exports = {
publicPath: '/micro-app-vue3/',
};
src/main.js
)中,使用 single-spa-vue
注册微应用。import { createApp } from 'vue';
import singleSpaVue from 'single-spa-vue';
import App from './App.vue';
const vueLifecycles = singleSpaVue(createApp, App);
export const bootstrap = vueLifecycles.bootstrap;
export const mount = vueLifecycles.mount;
export const unmount = vueLifecycles.unmount;
npm run build
single-spa
和 single-spa-vue
,并注册微应用。npm install single-spa single-spa-vue
在主应用的入口文件中,注册微应用。
import { registerApplication, start } from 'single-spa';
import { createApp } from 'vue';
import App from './App.vue';
const app = createApp(App);
app.use(/* 插件 */);
registerApplication(
'micro-app-vue3',
() => import('micro-app-vue3/main.js'), // 这里是微应用的入口文件路径
(location) => location.pathname.startsWith('/micro-app-vue3')
);
start();
启动主应用:
在主应用中启动应用。
测试和调试:
进行整个微前端应用的测试和调试,确保微应用能够正确加载和卸载,并检查整个应用的路由协调等功能。
部署:
部署主应用和微应用,确保微应用可以通过主应用的入口地址被正确加载。
更详细的信息和指导可以前往single-spa-vue官方文档查看
Qiankun对single-spa进行了封装,解决了一些不足,相较于single-spa有以下优势。
更轻量:
Qiankun 的核心库相对较小,更轻量
配置简单:
对于单个微应用的接入,配置更简单
样式隔离好:
Qiankun的Shadow DOM,避免了全局样式冲突
自动化注入应用间通信机制:
支持 props、Vuex、Redux 等多种数据通信方式,方便应用之间传递数据
运行性能好:
Qiankun 使用了微任务队列,在不同微应用之间切换更流畅
Qiankun的构建和部署与single-spa的相似,具体信息和指导可以前往Qiankun官方文档查看。
在微前端实施时需要注意一些关键方面,以确保系统的可维护性、稳定性和性能。以下是在使用微前端架构时需要注意的一些关键方面:
微前端架构为前端开发提供了一种新的组织和管理前端应用的方式,同时克服了传统单体应用的一些局限性。通过合理应用这些原则和技术,团队能够构建出更加灵活、可维护的前端生态,提升整体开发和维护效率。