0%

Jamstack

什么是 Jamstack?

Jamstack 并非一个具体的技术,而是一个概念。

在了解 Jamstack 之前,我们先了解一下:

  • 网页动静之分
  • 动态内容静态化

网页动静之分

如果网页内容都由 html 静态资源提供,那么 web 是静态的。 否则,如果网页内容是通过查询后端服务,由浏览器实时渲染出来的,那就是动态 web。

静态网页具有以下优点:

  • 对资源占用极少
  • 可缓存,如 CDN 等
  • 易被搜索引擎收录

动态内容静态化

存在另外一种情况,那就是内容并不是完全动态的,有一些动态内容具备以下特征:

  • 内容的变更并不频繁,只在少数情况下需要
  • 内容更多的是为了展现
  • 内容不具备复杂的业务逻辑

比如播客,播客便具备以上特征,稍微调整下,我们完全可以把播客这种动态的内容静态化。

而这就是 Jamstack,一种将动态内容静态化的理念

Jamstack 的组成

一个完善的 Jamstack 解决方案,必然包含以下两个部分:

  • 内容管理
  • 构建工具

内容管理

内容管理就是负责你内容的地方,你可以在这个地方随意的添加、修改或删除你的内容。

你可以使用 hexo、gitbook 这种本地文件系统的模式,可以使用 strapi、nocodb 这种 headless cms 的方式管理你的内容。

构建工具

构建工具应具备以下功能:

  • 负责读取内容,并生成合适的页面
  • 负责页面的展现(非必须,你可以使用 nginx、apache、CDN 等方式展现你的页面)

Jamstack 的优点及缺点

很明显,Jamstack 结合了动态与静态的优点:

  1. 一方面,它支持内容的动态管理,你可以使用内容管理服务来管理你的内容,这意味着你不需要直接为这些动态内容编写静态的 HTML。
  2. 在此之上,内容与UI做到了完美的分离,在内容不变的情况下,你可以随时修改你的样式或 UI,甚至可以支持不同的载体,比如网页,小程序,App 等。
  3. 另一方面,它最终生成的是静态页面,意味着静态网页所具有的高性能易于缓存对搜索友善等特点它都具备。

当然,这不是说 Jamstack 是万能的。

Jamstack的局限性:

  • 其一是它仅仅适合一部分以展现为主的动态内容。比如博客,文档,视频,产品展现等,它并不适合业务逻辑很强的动态内容,比如库存管理,雇员管理或订单管理这些。
  • 其二是它的更新比较频繁,每次动态内容的变更都需要重新生成网页。