假设面试官问你有关“微前端”的问题,你能答多少...

一. ✍🏻 前言

前端项目模块增多的情况,如果你是前端项目负责人,手下好多项目好多系统,然后你要对这些系统进行整合,有老的系统,有新的系统,有之前vue2不想重构成vue3的系统,有angular,有react等等...公司让你进行一个整合,那么微前端是个选择。
这次我们来聊聊微前端

二. 💡 what 是什么

📢 问:什么是微前端❓

📢 答:"微前端"(micro-frontends)是多个前端应用聚合的一个应用的架构体系 的统称(如果后面这些都记不住,记住前面这句话,理解它就行了)。每个小的应用都可以独立运行独立开发独立部署上线

三. 💡 why 为什么

📢 问:为什么要有微前端❓为什么要有这个东西出现❓

📢 答:微前端出现的目的,是为了将前端应用拆分为更小的、可独立开发和部署的模块每个模块都可以由不同的团队进行开发和维护

👆 前面前言部分也说了整合多个模块的问题,不单单是为了解决多个模块整合在一起多团队不同成员开发的问题,还可以解决遗留系统的迁移的这么一个问题,对聚合前端项目,不受限于技术选型,提高开发的效率。

最最重要的是,每个模块可以独立部署上线,互不干扰。

四. 💡 how 怎么做

📢 问:微前端怎么做?怎么动手开始?公司有这个微前端项目的需求要我搭建,怎么开始?方法是什么?如何实施?

📢 答:现有框架->

  • 蚂蚁金服搞得那一套微前端(乾坤qiankun
  • 腾讯开源的基于webComponents和iframe的微前端框架wujie无界
  • JavaScript微前端框架,一个将多个单页面应用聚合为一个整体应用 single-spa
  • 京东零售做的微前端框架,基于webcompoenent渲染,从组建思维实现微前端的 micro-app

qiankun

📦 安装

js 复制代码
yarn add qiankun / npm install qiankun -S

🔌 使用

examples/main/index.js

javascript 复制代码
import { registerMircroApps, start } from 'qiankun';

// 主应用可以使用任意的技术栈,比如vue|react|angular

// 注册子应用

registerMircroApps([
    {
        name: 'react',
        entry: '//localhost:7100',
        container: '#subapp-viewport',
        activeRule: '/react'
    },
    {
        name: 'vue',
        entryL '//localhost:7101',
        container: '#subapp-viewport',
        activeRule: '/vue'
    },
    //...等等
])

🎯 效果

wujie

📦 安装

js 复制代码
yarn add wujie / npm install wujie -S

🔌 使用

php 复制代码
import { startApp } from 'wujie';

startApp({ 
    name: '唯一id',
    url: '子应用路径',
    el: '容器',
    sync: true
})

🎯 效果

...


五. 🎯 技术方案

实现微前端的重要思想就是将应用进行拆解和整合,通常是一个父应用加上一些子应用。要么,使用类似nginx配置不同应用的转发(nginx路由转发),要么就是iframe将多个应用整合到一起(iframe嵌套)。

技术方案 描述
组合式应用路由分发 每个子应用独立构建和部署,运行时由父应用来进行路由管理,应用加载,启动,卸载,以及通信机制。
web components 每个子应用需要采用纯web components技术编写组件,是一套全新的开发模式。
iframe嵌套 父应用单独是一个页面,每个子应用嵌套一个iframe,父子通信可采用postMessagecontentWindow方式。
nginx路由转发(运维层面) nginx配置反向代理,实现不同路径,映射到不同应用。(1)www.example.com/app1 -> app1;(2) www.example.com/app2 -> app2。

nginx配置示例:

☎️ 希望对大家有所帮助,如有错误,望不吝赐教,欢迎评论区留言互相学习。感谢阅读,祝您开发有乐趣。

相关推荐
IT、木易1 小时前
ES6 新特性,优势和用法?
前端·ecmascript·es6
计算机软件程序设计1 小时前
vue和微信小程序处理markdown格式数据
前端·vue.js·微信小程序
指尖时光.1 小时前
【前端进阶】01 重识HTML,掌握页面基本结构和加载过程
前端·html
前端御书房1 小时前
Pinia 3.0 正式发布:全面拥抱 Vue 3 生态,升级指南与实战教程
前端·javascript·vue.js
NoneCoder1 小时前
JavaScript系列(84)--前端工程化概述
前端·javascript·状态模式
晚安7202 小时前
idea添加web工程
java·前端·intellij-idea
零凌林3 小时前
vue3中解决组件间 css 层级问题最佳实践(Teleport的使用)
前端·css·vue.js·新特性·vue3.0·teleport
糟糕好吃3 小时前
用二进制思维重构前端权限系统
前端
拉不动的猪3 小时前
刷刷题17(webpack)
前端·javascript·面试
烂蜻蜓4 小时前
深入理解 Uniapp 中的 px 与 rpx
前端·css·vue.js·uni-app·html