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

一. ✍🏻 前言

前端项目模块增多的情况,如果你是前端项目负责人,手下好多项目好多系统,然后你要对这些系统进行整合,有老的系统,有新的系统,有之前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配置示例:

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

相关推荐
weixin_382395237 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__7 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.8 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~9 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华9 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子12 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅12 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni12 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学13 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端