当前位置: 首页 > Web前端 > HTML

17种可以实现微前端的解决方案

时间:2023-03-27 23:49:30 HTML

一、微前端解决方案的思路在前端技术领域,实现微前端有几种比较成熟的思路:基于接口协议:子应用按照协议导出几个接口,主应用在运行时子应用导出的接口基于沙箱隔离:主应用创建一个隔离的环境,这样子应用基本不需要考虑什么环境它们运行在,并且可以按照基于模块协议的普通开发思路进行开发:主应用将子应用看做一个模块,这与模块的用法没有区别。二、微前端的几种实现方式在前端技术领域的实现方式有以下几种:路由分发:开发成本低维护成本低,可行性高,技术栈无限,简单的iFrame:开发成本低,低维护成本、高可行性、无限技术栈、简单应用栈,难微应用:开发成本中等,维护成本中等,可行性高,受技术栈限制,难以实现纯Web组件:开发成本高,维护成本低,可行性高,技术栈无限,易于实现与Web结合组件:开发成本高,维护成本低,可行性高,技术无限ystack,易于实现3.实??现微前端的17个框架介绍1.Single-Spa:最早的前端微服务Javascript框架,兼容多种前端技术栈一个JavaScript微前端框架聚合成一个整体应用,在同一个页面使用多个前端框架无需刷新页面,无限技术栈,支持每个单页应用独立部署,新功能使用新框架,旧的单页应用无需重写即可共存,有效改善初始加载时间,延迟加载代码,文档地址:https://zh-hans.single-spa.js...2.Qiankun:基于Single-Spa,阿里巴巴开源微前端框架阿里飞冰微前端框架,兼容多种前端技术栈,基于单spa封装,提供更多开箱即用的API,无限技术栈,HTMLEntry访问方式,让你访问微应用就像使用iframe一样简单,样式隔离,保证微应用之间的样式互不干扰,JS沙箱,保证微应用之间的全局变量/事件不冲突,资源预加载,浏览器空闲时预加载未打开的微应用资源,加快微应用的打开速度,umi插件,提供@umijs/plugin-qiankunumi应用一键切换到微前端架构体系,文档地址:https://qiankun.umijs.org/zh/...3.Icestark:阿里飞冰的微前端框架在后台比较分散,而且体验差异很大,因为需要频繁跳转导致运行效率低下。在一个希望统一的系统中,单页应用非常庞大,多人协作成本高,开发/构建时间长,依赖升级回归成本高,技术栈不限,系统有二方/三方接入要求,文档地址:https://micro-frontends.ice.w...4.阿里云Alfa是在阿里云孵化的微前端解决方案控制台系统,定位为企业级微前端解决方案。前端系统方案不局限于技术栈,开箱即用,无代码入侵,完善的微前端系统支持,完整的前端容器沙箱,多实例兼容,文档地址:https://alfajs.io/5。ModuleFederation:它是ZackJackson发明的JavaScript框架。ZackJackson随后提议为其创建一个Webpack插件。它是webpack提供的一种微前端解决方案,可以使一个JavaScript应用程序动态运行另一个JavaScript应用程序中的代码并共享依赖项。自动化管理,可以共享Host中的依赖,当版本不满足要求时自动回退到Remote中的依赖,可以自由控制共享模块的粒度,从单个组件到完整应用。不仅实现了组件级的复用,还实现了微服务的基本功能。共享模块非常灵活。模块中的所有组件都可以通过异步加载来调用。文档地址:https://webpack.js.org/concep...6.FrintJS:用于构建可扩展和响应式应用程序的模块化JavaScript框架从不同的打包器加载应用程序,为应用程序提供结构,并处理路由、依赖项等问题,由附加包RN和Vue支持,但大多数文档和测试是针对React的,文档地址:https://frint.js.org/7。Bit:构建、集成和组合独立的组件,用传统的单体管理前端前端的安全性和健壮性,简单的访问,强大的可扩展性,以及通过简单解耦的代码库、自治的团队、小型定义明确的方式增强的工作流API、独立发布流水线、持续增量升级,文档地址:https://bit.dev/docs/quick-start8。PuzzleJS:一个可扩展和快速建站的微前端框架,对SEO友好,在服务器端准备和渲染,当片段需要的api失败时PuzzleJs可以保证其他页面片段仍然正常工作,文档地址:https:///github.com/puzzle-js/...9.Mooa:基于Angular的微前端服务框架,兼容多种前端技术栈,构建插件式满足业务快速变化需求的web开发平台和分布式多团队并行开发,构建面向服务的中间件,构建高可用、高复用的前端微服务平台,支持前端独立交付部署,文档地址:https://github.com/phodal/mooa10.ngx-planet:一个强大的、可靠的、完整的、完全生产就绪的Angular微前端库,只支持Angular框架,不支持其他MV*前端框架,支持同步rendering多个子应用,支持共存(coexist)和默认(default)两种模式,默认模式切换其他子应用并销毁当前子应用,共存模式不会销毁,而是隐藏,支持预加载子应用applications,支持风格隔离,内置多应用间通信,支持跨应用组件渲染,示例完整,包含路由配置,懒加载等功能,文档地址:https://github.com/worktile/n。..11。Ara框架:Ara是一个Airbnb的Hypernova以免费的技术栈和灵活的架构轻松开发和集成微前端框架。文档地址:https://ara-framework.github....12。微应用:是京东零售推出的基于WebComponent的渲染,组件化思想实现的微前端技术,简单易用,微前端接入成本低,零依赖,兼容所有框架(无需提供脚手架工具),提供JS沙箱、样式隔离、元素隔离、预加载、资源地址补全、插件系统、数据通信等一系列完整功能,https://zeroing.jd.com/13。Piral:基于React的微前端,目标是让你使用微前端轻松构建门户应用渐进式程序迁移,共享库,共享现有布局和程序框架,文档地址:https://github.com/smapiot/螺旋14。OpenComponent:目标是“前端世界的无服务器”,旨在成为一站式微前端框架,使其成为一个丰富复杂的系统,包括从组件处理到注册中心,到模板,甚至CLI工具。同构小单元代码,应用页面的组件渲染,文档地址:https://github.com/opencompon...15.Liugi:是一个微前端JavaScript框架,你可以使用它来创建本地和驱动的管理用户界面分布式视图允许Web应用程序与应用程序中包含的微前端进行通信配置路由、导航、授权和UX元素等设置。文档地址:https://github.com/SAP/luigi16。Mosaic:是一组服务、库和规范,定义了它的组件如何相互交互以支持大型网站的微服务架构使用Fragments的机制。这些片段由单独的服务程序提供服务,并在运行时根据模板定义组合。它们由一堆处理不同问题的软件包组成,例如路由、布局、模板存储,甚至显示UI,文档地址:https://www.mosaic9.org/17。SystemJS:它不是一个微前端框架,但它确实提供了跨浏览器独立模块管理的解决方案该方案允许我们使用与JS模块相关的不同特性,例如动态导入和导入映射等,而无需依赖在原生浏览器支持上,所有这些都具有接近原生的性能,提供方便的方式来访问其“模块注册表”,以便您始终知道哪些模块在您的浏览器中可用,文档地址:https://github.com/systemjs/s...4.选择微前端方案时,需要考虑是否可以解决以下10个问题。微应用的注册、异步加载和生命周期管理;主从之间的消息机制;微应用之间的安全隔离措施;独立于框架和版本的微应用程序;微应用与主从之间公共依赖库、业务逻辑(utils)和版本如何管理;微应用独立调试,与主应用联调,快速定位错误(启动问题);微应用发布流程;微应用打包优化;私有云场景微应用外包方案;渐进升级:用微应用平滑重构旧项目