《OneForAll框架搭建之旅》前端篇:微前端架构设计(Vue)
心之所向,勇往直前!
记录开发过程中的那些小事,给自己加点经验值。
前言
项目使用了Vue cli3.0+作为基础架构,这个版本和2.0的有一些不同。具体参考:
环境

依赖

演示

思路:先加载顶部一级菜单,当用户点击时触发请求,加载模块。等待模块加载完成后,加载二级菜单。这时候所有组件已经注册完成,用户点击菜单,根据固定好的路由配置,进入对应的模块子页面。
架构
微前端的优点浅显点理解就是独立开发和部署、灵活配置、扩展性强。在以前开发的时候,所有的功能都放在同一个项目下,不仅造成体积越来越大(启动慢),而且后面接手的人往往需要花费很多时间去阅读代码后才能继续开发,造成很大的损耗。
现在,一切都变得很简单!
常见方案
- ifreame:简单易实现,但冗余html而且对SEO不友好
- WebComponents: 基本能实现功能,但兼容性不太行就没有仔细去琢磨
在这里框架中我采用的以Vue为核心实现模块化加载。

核心思路
主要根据菜单地址发起Http请求拿到子模块的index.html。这个入口文件记录了模块需要用到的css和js文件相对路径。然后通过正则表达式解析出script标签、style标签。最后将标签加载到主页的最底部,完成子模块的加载。
子模块拥有自己独立的领域逻辑,组件,api接口文件(为了避免冲突,要规范命名)。
如图:

路由装载
1. 自动注册子路由。
通过require.context获取views目录文件路径集合,然后解析.vue文件,根据目录名 + 组件名生成的名称作为路由的name注册到主路由。


2. 在main.js入口中暴露全局变量到window对象下,给子模块进行引用。registerChildRoutes方法用于子模块把自己的路由注册到主路由。

3. 子模块main.js注册路由

结语
本篇到此结束,如果有任何疑问或者指正,请发表在评论区。
《OneForAll框架搭建之旅》前端篇:微前端架构设计(Vue)的更多相关文章
- 看完这篇微服务架构设计思想,90%的Java程序员都收藏了
本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 微服务 软件架构是一个包含各种组织的系统组织, ...
- 微前端 & 微前端实践 & 微前端教程
微前端 & 微前端实践 & 微前端教程 微前端 micro frontends https://micro-frontends.org/ https://github.com/neul ...
- (转)微服务架构 互联网保险O2O平台微服务架构设计
http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...
- Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战
Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...
- SpringCloud之旅第一篇-微服务概念
一.单体架构的问题 微服务为什么会出现?在学习Springboot的时候知道Springboot极大的简化了我们的开发,我们可以快速的进行业务开发,Springboot单体应用在项目的开发初期能够满足 ...
- 【微前端】微前端最终章-qiankun指南以及微前端整体探索
序 这才2月中旬,广州就已经渐渐地进入了夏季,--夏天总是让人焦虑的.过年闲暇时间写下了微前端这系列的终章,欢迎拍砖.如果你习惯直接上手代码,不妨跳到实践一节,直接上代码教程玩一玩. qiankun原 ...
- Java高并发高性能分布式框架从无到有微服务架构设计
微服务架构模式(Microservice Architect Pattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成 ...
- 互联网保险O2O平台微服务架构设计(转)
非常感谢http://www.cnblogs.com/skyblog/p/5044486.html 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因 ...
随机推荐
- 887A. Div. 64#模特的数学技巧(字符串处理)
问题出处:http://codeforces.com/problemset/problem/887/A 问题大意:对于给出的一串二进制数,能否通过去掉一些数字,使之成为十进制下64的倍数 #inclu ...
- SpringBoot集成ssm-druid-通用mapper
简单介绍 springboot 首先什么是springboot? springboot是spring的另外一款框架,设计目的是用来简化新的spring应用的搭建和开发时所需要的特定的配置,从而使开发过 ...
- SAP 配置表记录创建人/创建日期/创建时间/更改人/更改日期/更改时间
在实际开发需求中,为了使客制功能具有灵活的可配置性,通常采用开发功能+配置表的形式处理.有些客制的配置功能需要追溯到谁在什么时候增加了什么配置,或者谁在什么时候更改了什么位置,配置表的Log功能就显得 ...
- 卸载python3
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 卸载pyhton3 whereis python3 |xargs rm -frv 删除 ...
- 什么是CDN
1.什么是cdn cdn全称是内容分发网络.其目的是让用户能够更快速的得到请求的数据.简单来讲,cdn就是用来加速的,他能让用户就近访问数据,这样就更更快的获取到需要的数据.举个例子,现在服务器 ...
- linux打开和关闭端口
查看哪些端口被打开 netstat -anp 关闭端口号:iptables -A INPUT -p tcp -drop 8080 -j DROP 打开端口号:iptables -A INPUT -p ...
- Contiguous Repainting
题目描述 There are N squares aligned in a row. The i-th square from the left contains an integer ai. Ini ...
- Tomcat爆出严重漏洞,附影响版本及解决方案
昨天,群里聊嗨了.大家都在远程办公,却都急急忙忙的升级线上的 Tomcat 版本,原因就是 Tomcat 被曝出了严重的漏洞,几乎涉及到所有的版本. 一.漏洞原理具体来说就是 Apache Tomca ...
- GIL锁和进程/线程池
GIL锁 1.GIL锁 全局解释器锁,就是一个把互斥锁,将并发变成串行,同一时刻只能有一个线程使用共享资源,牺牲效率,保证数据安全,也让程序员避免自己一个个加锁,减轻开发负担 带来的问题 感觉单核处理 ...
- markdown常见用法
命令 生成目录 [TOC] 插入标题 # 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六季标题 插入shell 开头:```shell 结尾 ...