微前端框架MicroApp入门学习笔记(一)

news2025/4/16 1:13:42

1、简介

  微前端是一种架构风格,旨在通过将前端应用程序拆分为更小、更可管理的部分,使多个团队能够独立开发、部署和维护这些部分,从而实现前端的可扩展性和可维护性。
  MicroApp框架是京东出品的一种用于构建微前端架构的开源框架,旨在帮助开发者更好地构建和管理复杂的前端应用程序。

  京东MicroApp框架具有以下特点和功能:

  1. 轻量级:框架本身体积小,加载速度快,不会给应用程序带来额外的负担。
  2. 插件化:支持插件机制,可以根据需要灵活添加和扩展功能。
  3. 组件化:采用组件化的开发模式,方便开发者进行模块化开发和复用。
  4. 独立部署:每个MicroApp都可以独立部署和运行,支持单独开发和测试。
  5. 路由管理:提供路由管理功能,支持子应用之间的路由跳转和通信。
  6. 状态管理:提供状态管理机制,允许不同子应用之间共享数据和状态。
  7. 样式隔离:采用样式隔离的方式,确保每个子应用之间的样式不会相互干扰。

  使用京东MicroApp框架,开发者可以将复杂的前端应用程序拆分为多个独立的子应用,每个子应用可以由不同的团队进行开发和维护,从而实现团队间的解耦和独立开发。同时,框架提供了一套完整的工具和规范,简化了微前端架构的搭建和管理过程。

详细内容可以前往官方文档学习: 《官方文档》。

2、入门示例

2.1、主应用配置

  第一步,在package.json文件中引入MicroApp框架依赖,如下所示:

"dependencies": {
	"@micro-zoe/micro-app": "^0.8.11",
	"vue-router": "^3.5.1",
	   "core-js": "^2.6.5",
	   "vue": "^2.6.10"
	 },

也可以通过命令直接安装“npm i @micro-zoe/micro-app@0.8.11 --save”

  第二步,修改main.js文件,完成初始化。

import Vue from 'vue'
import App from './App.vue'
import router from './router';
import microApp from '@micro-zoe/micro-app'

Vue.config.productionTip = false

microApp.start();

new Vue({
	 router,
  render: h => h(App),
}).$mount('#app')

  第三步,创建路由及其页面

  app.vue页面修改(增加测试切换应用的按钮):

<template>
  <div id="app">
	  <h1>主应用</h1> 
		<router-link to="/micro-child/hello">跳转子应用 A</router-link>
	  	</br>
		<router-link to="/micro-child2/hello">跳转子应用 B</router-link> 
		<router-view/> 
  </div>
</template>

  子应用的路由页面:

<!--子应用A-->
<template>
  <div>
    <h1>子应用A</h1>
    <hr>
    <!--
      name(必传):应用名称
      url(必传):应用地址,会被自动补全为http://localhost:3000/index.html
      baseroute(可选):基座应用分配给子应用的基础路由
     -->
    <micro-app name='micro-child' url='http://localhost:8081/' baseroute='/micro-child'></micro-app>
  </div>
</template>


<!-- 子应用B  -->
<template>
  <div>
    <h1>子应用B</h1>
    <hr>
    <!--
      name(必传):应用名称
      url(必传):应用地址
      baseroute(可选):基座应用分配给子应用的基础路由,就是上面的 `/my-page`
     -->
    <micro-app name='micro-child2' url='http://localhost:8082/' baseroute='/micro-child2'></micro-app>
  </div>
</template>

  路由配置:

// 主程序 路由
import Vue from 'vue'
import VueRouter from 'vue-router'
import MyPage from '../components/MyPage.vue'
import MyPage2 from '../components/MyPage2.vue'

Vue.use(VueRouter)

const routes = [
    {
        // 👇 非严格匹配,/my-page/* 都指向 MyPage 页面
        path: '/micro-child/*', // vue-router@4.x path的写法为:'/my-page/:page*'
        name: 'micro-child',
        component: MyPage,
    },{
        // 👇 非严格匹配,/my-page/* 都指向 MyPage 页面
        path: '/micro-child2/*', // vue-router@4.x path的写法为:'/my-page/:page*'
        name: 'micro-child2',
        component: MyPage2,
    }
]

const router = new VueRouter({
    mode: 'history',
    // 👇 设置基础路由,子应用可以通过window.__MICRO_APP_BASE_ROUTE__获取基座下发的baseroute,如果没有设置baseroute属性,则此值默认为空字符串
    base: '/',
    routes
})

export default router
2.2、子应用配置

  子应用就是普通的vue项目,配置该项目允许跨域支持就可以了。子应用A和子应用B配置一样,我选择其中一个进行记录实现过程:

  页面:

//app.vue
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <router-view></router-view>
  </div>
</template>

//组件
<template>
  <div class="hello">
    Hello-Word,My name is APP A!
  </div>
</template>

  路由:

import VueRouter from 'vue-router';
import Hello from "../components/Hello.vue"
import Vue from "vue";

Vue.use(VueRouter)
const router = new VueRouter({
	mode: 'history',
    // 👇 设置基础路由,子应用可以通过window.__MICRO_APP_BASE_ROUTE__获取基座下发的baseroute,如果没有设置baseroute属性,则此值默认为空字符串
    base: window.__MICRO_APP_BASE_ROUTE__ || '/',
    routes:[
        {
            path: '/hello',
            name: 'hello',
            component: Hello,
        },
    ],
})

export default router;

  为了支持跨域,需要修改vue.config.js文件,增加如下内容:

module.exports = {
  transpileDependencies: ["vue"],
  devServer: {
    headers: {
      'Access-Control-Allow-Origin': '*',
    }
  }
};
2.3、启动项目

  启动项目,首先启动子项目,根据子项目地址,修改主应用的子应用路由中的配置页面中的地址,然后启动主应用,访问主应用,页面如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统开机启动详细流程

目录 Linux系统开机启动流程为什么要了解系统开机启动流程关机的命令开机流程图:开机自检&#xff08;Power-On Self-Test&#xff0c;POST&#xff09;BIOSROM和RAMBIOS的介绍CMOS的介绍&#xff1a;BIOS和CMOS的区别和联系如何进入BIOS系统&#xff1f;如何改BIOS的顺序以及为…

vue js实现表格行拖拽

效果图&#xff1a; <a-table :dataSource"dataSource" :columns"columns" :pagination"false"><template #bodyCell"{ column, record }"><template v-if"column.key td"><div style"cursor: p…

|DataDirectory| 解决Web.config中数据库连接的相对路径问题

1、业务背景 维护老系统代码&#xff0c;Web.config中数据库字符串连接的相对路径的处理 2、核心代码如下 <connectionStrings><add name"connString" connectionString"ProviderMicrosoft.Jet.OLEDB.4.0;Data Source|DataDirectory|\FnDB.mdb"…

【Java】Java中的String类

文章目录 一、认识 String 类二、String 类的常用方法2.1 构造方法2.2 String 类对象之间的比较2.3 字符串查找2.4 字符串的转换2.5 字符串替换2.6 字符串拆分2.7 字符串截取2.8 字符串常量池2.9 字符串的不可变性 三、StringBuilder 和 StringBuffer3.1 StringBuilder3.2 Stri…

robotframework接口自动化测试详解

我们在使用rebotframework的时候&#xff0c;不只是能做UI自动化&#xff0c;接口自动化也是可以的。 那么这里就整理一下rebotframework_接口自动化的应用&#xff1a; 一、编写接口测试 由上图可知&#xff0c;该接口如下信息&#xff1a; 接口功能描述&#xff1a;预诊模…

Spring6快速入门

Spring6快速入门 各工具版本要求&#xff1a; JDK:Java17 Maven:3.6 Spring:6.0.9 简介 Spring是一个控制反转(IOC)&#xff0c;面向切面(AOP)编程的轻量级框架。 2002年&#xff0c;Rod Johnson首次推出Spring框架的雏形&#xff0c;interface21(https://interface21.io/) 200…

python爬虫-获取cookie实例小记

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 第一步&#xff1a;请求拿到响应内容。并分析。 第二步&#xff1a;关键步骤分析(这部分参考的B站图灵…

2023 年互联网 Java 工程师高级面试八股文汇总(1260 道题目附解析)

今年的行情&#xff0c;让招聘面试变得雪上加霜。已经有不少大厂&#xff0c;如腾讯、字节跳动的招聘名额明显减少&#xff0c;面试门槛却一再拔高&#xff0c;如果不用心准备&#xff0c;很可能就被面试官怼得哑口无言&#xff0c;甚至失去了难得的机会。 现如今&#xff0c;…

concurrenthashmap原理

目录 一、Concurrent类型的容器 二、HashMap多线程死链问题 三、Concurrenthashmap8原理 1、构造器 2、get流程 3、put流程 4、initTable 5、addCount方法 6、size流程 四、Concurrenthashmap7原理 1、put流程 2、rehash扩容流程 3、get流程 一、Concurrent类型的…

如何选型低代码平台

编者按&#xff1a;近年来&#xff0c;在数字经济迅速发展的背景下&#xff0c;越来越多的企业开始建立健全业务系统&#xff0c;借助数字化工具提升管理效率。企业如何选自己合适的产品&#xff0c;本文从低代码定义&#xff0c;特点技术路线做了介绍。其中MyApps低代码平台拥…

git常用命令之tag

11. Tag 11.1 创建tag 命令作用轻量标签git tag v1.0基于本地当前分支最新commit创建tag v1.0git tag v.0325 125a1d1给指定commit 125a1d打标签附注标签git tag -a v.0329 -m "给标签添加说明" 125a1d1基于指定commit创建标签并添加说明git tag -a v.0329 -m &quo…

联邦学习中怎样对数据质量进行评估

目录 联邦学习中怎样对数据质量进行评估 联邦学习中怎么在不暴露数据的情况下&#xff0c;证明数据量条目数 联邦学习中怎样进行数据质量评估 联邦学习中怎样对数据质量进行评估 在联邦学习中&#xff0c;评估数据质量是至关重要的&#xff0c;因为数据质量直接影响到模型的…

Redis 简介与数据类型介绍

目录 ​编辑 一、Redis是什么&#xff1f; 二、redis五大基本类型 2.1 String(字符串) 2.1.1 应用场景 1&#xff09;缓存功能 2&#xff09;计数器 3&#xff09;统计多单位的数量 4&#xff09;共享用户session 2.2 List(列表) 2.2.1 应用场景 1&#xff09;消息队列 2…

07 redux的使用

总结 一.reduxjs/toolkit使用 1.1安装 安装&#xff1a; npm install reduxjs/toolkit在src目录中的store目录中的index.js中添加 1.2导入包中的对象 导入包中的对象 import { createSlice, configureStore } from reduxjs/toolkit1.3创建切片对象 创建切片对象 //这个…

霍夫变换车道线识别-车牌字符识别代码(matlab仿真与图像处理系列第5期)

1.车道线识别 当使用霍夫变换进行车道线识别时,可以按照以下步骤来编写 MATLAB 代码: 读入图像:使用imread函数读取包含车道线的图像。image = imread(lane_image.jpg);图像预处理:为了减少噪音和突出车道线,可以对图像进行预处理。通常,可以采用以下步骤:将图像转换为…

kafka入门,Kafka Broker工作流程、Broker重要参数(十一)

Zookeeper 存储的 Kafka 信息 在zookeeper的服务端存储的Kafka相关信息 1&#xff09;/kafka/brokers/ids [0,1,2] 记录有哪些服务器 2&#xff09;/kafka/brokers/topics/first/partitions/0/state 记录谁是leader,有哪些服务器可用 3&#xff09;/kafka/controller 辅助选举l…

Java中的「接口」到底是什么?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是接口接口的定…

浅浅的复习一下sql

DISTINCT 语法&#xff1a; SELECT DISTINCT 列名称 FROM 表名称1、现在有一个表如下&#xff1a; 2、执行sql语句-1 SELECT DISTINCT ename,email FROM emp 结果&#xff1a; 说明&#xff1a;由于小刘的ename和email重复了&#xff0c;所以结果只显示一次&#xff01; 3…

面试最爱问的浏览器的缓存机制问题

老规矩&#xff0c;想要了解学会一项技术&#xff0c;先从定义下手&#xff01; 浏览器的缓存的定义 浏览器的缓存是指浏览器在处理网络资源时&#xff0c;将这些资源存储在本地磁盘或内存中&#xff0c;并在后续的请求中重复使用这些缓存的资源。它旨在提高网页加载速度、减少…

AI画图——十二生肖

适当放下代码&#xff0c;有益身心健康。 AI绘画&#xff0c;码农必备&#xff0c;超解压。 多少没被和谐算多少~~~ 子鼠 丑牛 寅虎 卯兔 辰龙 巳蛇 午马 未羊 申猴 酉鸡 戌狗 亥猪