介绍

mess-cli是一个基于single-spa进行封装了的微服务脚手架,它为你提供了react、vue项目的single-spa模板


不了解mess-cli的,可以参考mess-cli官网,或者了解一下mess-cli的在线小DMO

建议以下内容结合在线DEMO并行浏览

以下内容中的模块均指业务模块,具有非常高的业务流程性。

开始

首先小DEMO长这样:

主页

你可以把它当做一个非常庞大的后台管理系统。左侧有非常多的菜单,对应非常多的页面,可能有100个页面左右吧。

想象一下这样的系统写在一个前端项目里面,是多么地庞大,也许有十几二十个前端开发人员一起完成这个加急项目。这个时候,项目的维护、架构,代码的冲突解决等,将会是所有人的噩梦。

但是如果我们把这个拥有100个页面的系统拆分成各自10个页面的模块,这些模块可以自己单独本地开发,并且每个模块都是一个前端项目,开发完成后,将它们各自打包部署,合并成一个系统。这样的话,一个开发人员只需要关注自己负责的模块代码,不需要担心某一个其他模块的同事把自己的代码误删了~或者某天去解决一大堆冲突。

那么通过这种方式,我们最后怎么将它们组装成一个系统呢?

  1. 可以通过iframe嵌套,但是没必要~,iframe不共享资源文件,不共享全局变量等,存在各种各样的问题。
  2. 可以通过single-spa,也就是本文案例的解决方式,解决了iframe的弊端.

揭秘

通过single-spa,我将上述Demo,拆分成了四个模块和一个中心服务,一共五个前端项目,通过single-spa将它们组合成一个完整的系统。
在demo里面,我对整个项目的结构进行了讲解,并介绍了一些痛点。 传送门
demo集成了以下功能:

你能看到的有 2. 整个系统的一键切换主题色 3. 用户权限的下发(下发到各个模块中),各个模块各自处理 4. 菜单的互相跳转

你看不到的有:

  1. 由五个独立的前端项目,共同组成一个系统,模块间无强耦合关系
  2. 由核心服务维护模块路由和模块的注册
  3. 核心服务引入公共依赖,保证不重复加载任何文件,包括element-ui、antd-design的样式表文件
  4. 各个模块都集成了状态管理、路由,即vuex、vue-router、redux、react-router等
  5. ...还有很多,请参考项目源码,传送门

更深的思考

同学们可以参考我部署的方式
主页
我上述的DEMO是通过部署五个前端打包后的项目在服务器上,由demo下的核心服务将components里面的三个模块注册进来,由demo下的路由模块控制整个系统的路由,那么............

换一种思路的话,不难发现:

components里面的模块都是可以复用的公共业务模块那么我增加另一个系统叫 DEMO2,只需要一小段代码,
即可引入components下想要的任何模块。通过DEMO2的自身路由模块,控制这些模块的加载位置与时机

通常是这样子的: 模块共享

这样,你写的业务模块可以被多个系统复用,减少了开发量,提高了复用性。

注意:一个模块在同一时刻,只能够被加载一次。意思就是同一页面,某个模块不能出现两次。这也是我在文章开头给模块的定义:具有高度业务流程性的公共页面,而不是我们平时用到的UI库那种,那个应该被称之为组件。

当然你可能不需要封装公共的业务模块进行复用,但是针对大项目,这种方式的解耦依然带给你很大的好处。

这种架构也许不适合于所有人,但是在针对复杂的后台管理系统,或者复杂的前台页面,前端微服务也值得大家去尝试。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

mess-cli的一个小DEMO,微服务脚手架的实践!相关推荐

  1. .NET Core 微服务学习与实践系列文章目录索引(2019版)

    Photo :.NET Core 文 | Edison Zhou 2018年,我开始学习和实践.NET Core,并开始了微服务的学习,以及通过各种开源组件搭建服务治理技术方案,并在学习过程中总结了一 ...

  2. 非营利组织Eatbch展示了每一个小的微交易是如何起作用的

    非营利组织Eatbch展示了每一个小的微交易是如何起作用的 去年4月,new.Bitcoin.com报道了以比特币为基础的非营利组织Eatbch.此后,该组织不仅为委内瑞拉人民提供食品,还扩大了服务范 ...

  3. 一个完整的微服务系统,应该包含哪些功能?--转

    原文地址:http://chuansong.me/n/405417651660 近几年,微服务架构迅速在整个技术社区窜红,它被认为是IT软件架构的未来方向,大神Martin Fowler也给微服务极高 ...

  4. java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  5. springboot mybatis easyui 整合的一个小demo

    springboot mybatis easyui 整合的一个小demo 这是最终完成界面 话不多说 开整! 这是项目结构 数据库 表结构和数据库 (有点乱 之前本来是个正经图书表的 = =.) /* ...

  6. cuda编程与gpu并行计算(三):一个小demo了解cuda基本语法

    gpu程序的一般步骤 CPU分配空间给GPU(cudaMalloc) CPU复制数据给GPU(cudaMemcpy) CPU加载kernels给GPU做计算(Kernel核: 可以理解为C/C++中的 ...

  7. windows环境下使用clion引入eigen库并实现一个小demo

    本文仅作个人记录用,之前未接触过C++,也没有使用过clion和cmake,不喜勿喷. 首先下载clion,mingw并配置相关环境,安装cmake,这部分比较简单,没有遇到什么问题. 接下来新建一个 ...

  8. java线程间通信_java线程间通信:一个小Demo完全搞懂

    版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...

  9. ChaosBlade x SkyWalking 微服务高可用实践

    来源|阿里巴巴云原生公众号 前言 在分布式系统架构下,服务组件繁多且服务间的依赖错综复杂,很难评估单个故障对整个系统的影响,而且请求链路长,如果监控告警.日志记录等基础服务不完善会造成故障响应.故障定 ...

最新文章

  1. Find Large Files in Linux
  2. Message、Handler、Message Queue、Looper之间的关系
  3. NodeJs教程(介绍总结!)终于在网上找到一个靠谱点的了T_T
  4. voms下的反射大师_VOMS旧版
  5. 6-6 求二叉树高度 (15 分)
  6. 详述近期遭利用的 Atlassian Confluence OGNL 注入漏洞 (CVE-2021-26084)
  7. python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)
  8. 第七章节 类的抽象(抽象类)
  9. 计算机科学丛书(2014-2018.Q1)
  10. [CSCCTF 2019 Qual]FlaskLight
  11. 一个域名对应多个IP地址
  12. CRC校验关键点说明(内附C语言CRC校验库)
  13. 13.3.8 添加换行符和换页符
  14. 分享个解决右键没有新建TXT文档的办法
  15. 使用python和tableau对数据进行抓取及可视化
  16. 【Java】StudentsInfoQuery(简单的学生信息查询系统)
  17. 电脑桌面宠物java,java 桌面动态宠物
  18. 到店维修要注意以下三点
  19. 医疗器械系统软件转产方案
  20. 微型计算机音乐发生器,微机原理及接口技术音乐发生器实验.doc

热门文章

  1. 计算机领域的辩论赛,计算机系辩论赛总决赛
  2. 输入三角形的三边,判断能否构成三角形,若可以则输出三角形的类型
  3. webservice和ajax区别,WebService简单介绍
  4. template标签介绍和使用
  5. 【DTCC2016】付铨:用技术打消用户上国产系统疑虑
  6. WebLogic 11g默认用户密码
  7. Qt MySql 驱动的编译
  8. 课程设计_solidworks_机械狗玩具建模,机械原理连杆机构运动
  9. 解决Coursera视频打不开、访问速度慢等问题
  10. 函数返回vector类型