你可能听说过 BigPipe,这是一个十多年前的技术,而 BigPipe 通常都会跟“性能优化”同时被提起。微前端也是一个很早被提出的技术,但是最近几年才开始比较流行。而目前微前端能够解决的最大的问题恐怕就是遗留系统改造。我们可以将新技术构造的系统和旧技术构造的系统完美融合到一起,彼此构建,发布,运行等不受干扰。 那么 BigPipe 究竟和微前端有什么关系呢,我为什么要把这两个放到一起来看?
回答这个问题之前,我们先来看下什么是 BigPipe,以及什么是微前端。
BigPipe
BigPipe 最早上 FaceBook 用来提升自家网站性能的一个秘密武器。其核心思想在于将页面分成若干小的构件,我们称之为 pagelet。每一个构件之间并行执行。
那么 BigPipe 做了什么?和传统方式有什么不同呢?我们知道浏览器处理我们的 HTML 文档以及其中包含的 CSS,JS 等资源的时候是从上到下串行执行的。如果我们把浏览器处理的过程划分为若干阶段(stage),那么这些阶段之间有着明显的时间先后关系。那么我们能不能将其并行化,从而减少时间呢?这就是 BigPipe 的基本思想。
话不多说,我们通过一段代码来帮助大家理解,比如你的项目首页是 home.html,大概这样子:
<!DOCTYPE html>
<html>
<head>
<script>
window.BigPipe = {
render(selector, content) {
document.querySelector(selector).innerHTML = content;
}
};
</script>