如何用 Web Components + 服务端渲染实现微前端

微前端是一种使多个团队能够独立开发一个现代 web 应用的技术,策略或者方法。这项技术源自于微服务。

什么是微前端
2016年末微前端在 ThoughtWorks Technology Radar 被第一次提到,它将微服务的概念应用到前端。现在比较流行的方式是创建一个基于微服务的功能丰富并且功能强大的浏览器应用,它被称为单页应用。但是前端层面上,这个应用只由一个前端团队开发,随着不断迭代,维护变得越来越困难,这被我们称为前端巨石应用。

微前端背后的理念是将一个网站或者 web 应用分为多个功能,不同的团队开发他们各自的功能。每个团队都有自己关心和擅长的业务或任务领域。

但是这并不是一个新的概念,它与 Self-contained Systems 有很多共同之处。在过去,这种处理方法被称为垂直系统的前端集成。

单体前端
在这里插入图片描述
垂直划分
在这里插入图片描述
微前端背后的核心理念
技术无关
每个团队可以选择或者更新他们自己的技术栈,并且不对其他团队造成影响。

隔离团队代码
不共享运行时,即便使用相同的框架。应用程序独立构建,并且不依赖共享状态和全局变量。

建立团队前缀
在不可能实现绝对隔离的情况下,使用团队前缀达成隔离的目的。例如:通过给 CSS、Events、Local Storage 和 Cookies 加前缀的方式避免冲突和明确所有权。

使用浏览器特性而非自定义 API
使用浏览器自定义事件进行通信,而非建立全局的发布订阅系统。如果不得不建立一个跨团队的 API,尽量保持简单。

建立一个有弹性的网站
即便 JS 出错或者禁止执行,也要让你的功能是可用的。

这篇文章分为两个主要部分。首先我们讨论页面合成,即:怎么用不同团队开发组件组成一个页面。之后,我们将演示实现客户端转换的例子。

页面合成
除了整合用不同框架写的客户端,服务端代码之外,我们需要商讨如何隔离 JS、避免 CSS 冲突、加载应用所需的资源、共享公共资源以及处理数据抓取,同时我们还需要考虑如何在加载状态给用户一个良好的体验。

基本例子
下面将使用拖拉机商品店的产品页作为例子。这里的功能是在三个不同的拖拉机模型中进行切换,并且每一次切换都会改变拖拉机的图片、名称、价格和与这个拖拉机相关的推荐商品。另外这儿还有一个购买按钮,点击购买按钮会将选择的商品添加到购物车,同时顶部的购物车中的商品数量也会得到相应更新。

在第一版代码中所有的 HTML 都使用 JS 和 ES6 模版字符串生成,每一次切换拖拉机会重新渲染整个 HTML,代码被写在一个 js/css 文件中,所有的功能由同一个团队开发。

功能划分
在拖拉机商品店的产品页的例子中,我们将整个页面的功能分为由三个不同的团队完成。团队 A (blue) 负责购买流程,即:蓝色虚线的部分,团队 B(green) 负责这个页面的商品推荐区域,即:绿色虚线的部分&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值