基于single-spa + vue 的前端微服务拆分及实践项目

**一、 前端微服务化的背景和价值:

背景:业务模块呈现快速增长趋势,孵化的业务模块也逐渐增多。
价值:让产品的前端架构能快速、插件化的支持业务的增加

二、设计目标

  1. 解耦产品前端各业务模块,支持独立开发、发布和部署;
  2. 设计出提供支持插件化调整业务模块、可多团队共同维护的前端架构;

三、系统分析

1.微前端架构简介

什么是前端微服务?
将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。

前端微服务框架:
Single SPA: 前端微服务的一套javascript框架,用于将多个javascript前端集合到一个前端应用程序中
基本概念:
加载器(独立服务):也就是微前端架构的核心,主要用来调度子应用,决定何时展示哪个子应用, 可以把它理解成电源。
包装器(每个服务都需要有自己的包装器):有了包装载器,可以把现有的应用包装,使得加载器可以使用它们,它相当于电源适配器。
主应用(独立服务):一般是包含所有子应用公共部分的项目—— 它相当于电器底座
子应用(独立服务):众多展示在主应用内容区的应用—— 它相当于你要使用的电器


主应用作用:
1.在未指定路由的情况下,可将路由重定向到已有路由。
2.不能识别的路由情况下,将路由重定向到已有路由。
3.可提供公共组件,来和不同子应用的界面进行组合来达到不同的显示效果。
官方给的demo:


设置了主应用后,进入5000端口,访问的就是主应用界面:

通过不同的路由就能拿到不同端口的资源:

4.详细拆分方案选择与对比

方案一:

方案二:

结论:选择方案二,这种方案符合基座模式,即导航服务是插排,各子服务是插头,能更灵活的支持各服务的组合。

5.服务间通信方案选择

方案 描述 使用场景
bus
Vue的单独实例,可理解为一个全局变量。 一般来说,都是利用父组件给子组件使用query或者params传递参数来实现子组件的数据显示,当出现子组件需要向父组件传递数据的时候,就需要用到bus。
vuex
状态管理库,是一个容器,包含着应用中大部分的状态。 当我们的应用遇到多个组件共享状态时,会需要:
1)多个组件依赖于同一状态。
2)来自不同组件的行为需要变更同一状态。
能解决更为复杂的通信场景。
结论:选择bus
原因:
(1)保持通信形式的单一性。产品中各业务模块内组件通信使用的就是bus,现只需给各服务共享一个全局的BUS即可实现通信;
(2)符合子组件向父组件传递数据的场景。拆分后服务间的通信机制是为了解决减少各子服务间依赖关系的,是由子服务向主服务发送消息,由主服务push路由加载子服务页面的方式实现子服务间通信;
(3)目前未识别到后续可能会出现的复杂通信场景;

6.拆分后各服务间通信示意图

最终成果:

基于single-spa+vue的前端微服务项目实践相关推荐

  1. 干货 | 基于开源体系的云原生微服务治理实践与探索

    作者简介 CH3CHO,携程高级研发经理,负责微服务.网关等中间件产品的研发工作,关注云原生.微服务等技术领域. 一.携程微服务产品的发展历程 携程微服务产品起步于2013年.最初,公司基于开源项目S ...

  2. 基于开源体系的云原生微服务治理实践与探索

    作者:董艺荃|携程服务框架负责人 携程微服务产品的发展历程 携程微服务产品起步于 2013 年.最初,公司基于开源项目 ServiceStack 进行二次开发,推出 .Net 平台下的微服务框架 CS ...

  3. mess-cli : 一个前端微服务架构脚手架(beta版)

    阅读本文需要较长的时间,本文介绍了微服务的概念.笔者心中的前端微服务,以及基于mess-cli脚手架,如何快速生成一个前端微服务架构项目 什么是微服务? 相信了解过spring cloud的同学都知道 ...

  4. 前端微服务无界实践 | 京东云技术团队

    一.前言 随着项目的发展,前端SPA应用的规模不断加大.业务代码耦合.编译慢,导致日常的维护难度日益增加.同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低.因此前端微服务应运而生. 前端 ...

  5. qiankun前端微服务框架

    目录 一.须知 二.主应用配置 2.1 main.js 2.2 app.vue 三.微应用配置 3.1 注册 3.1.1 vue.config.js配置 3.1.2 新增文件 publicPath.j ...

  6. 基于 Docker 的微服务架构实践

    http://dockone.io/article/4887 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Do ...

  7. 微服务实践 | 焱融云前端微服务架构的设计要点

    什么是微服务 微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的 API 进行通信的小型独立服务组成,这些服务由各个小型独立团队负责,每个服务可被独立部署,服务之间是松耦合的,每个服务仅关 ...

  8. 基于Spring Cloud及K8S构建微服务应用

    摘要 广发证券蔡波斯先生通过三个大方向来为我们分享基于Spring Cloud及K8S构建微服务应用. 内容来源:2017年6月10日,广发证券蔡波斯在"Spring Cloud中国社区技术 ...

  9. 基于CSE的微服务架构实践-轻量级架构技术选型

    [摘要] 本文在前一篇"基于CSE的微服务架构实践-基础架构"基础上,介绍了使用CSE进行轻量级架构的技术选型参考.文末提供了基于JWT的微服务认证鉴权方案. 轻量级架构模式下,可 ...

最新文章

  1. Silverlight 4 WebBrowser的使用及调用 WebBrowser 中的 javascript 方法
  2. 自定义ProgressBar
  3. 犀利的 JavaScript
  4. 杭电1280java实现
  5. 我们网管不能自己贬低自己
  6. exit()函数学习
  7. RabbitMQ从入门到精通
  8. 计算机三维实体建模与应用教学要求,三维建模教学大纲.doc
  9. Java千百问_05面向对象(004)_java接口到底是什么
  10. cookie与Session的区别,以及jQuery怎样操作cookie和Session
  11. npm私服搭建与应用
  12. [iOS] 通知详解: iOS 10 UserNotifications -- 附加包Media Attachments
  13. 【STM32F429开发板用户手册】第2章 STM32F429的开发环境搭建
  14. 高德 php,高德地图WEB版的使用
  15. 像“毒液”一样的粘液机器人火了,能取出体内异物,穿过1.5mm细缝无压力!...
  16. matlab图像处理学习笔记
  17. Java引入第三方包
  18. cocos3.4 使用quic-src报错:duplicate symbol _MD5_Final in:
  19. Hbase设置数据过期时间
  20. 云计算在互动电视上的商业应用

热门文章

  1. 机器视觉算法工程师试题
  2. 初一计算机教学论文,初中信息技术教学论文
  3. 关于IE8浏览器下,split()和replace()函数的不兼容问题
  4. 点击button没有反应
  5. itextsharp操作pdf删除某页
  6. Windows 11操作系统 ndis.sys 驱动无限蓝屏问题修复
  7. Flink on Yarn HA模式部署
  8. excel单元格内容拆分_拆分单元格内容,表哥表妹不要哭
  9. 高校师生疫情管理系统
  10. 总结:线程间频繁切换为什么耗费资源?