news view

什么是 Jamstack

只是一个概念, 可以描述一类架构.

JAM = JavaScript + APIs + Markup

在网页应用中, HTML 是通用的 Markup language.

首先前后端分离, 不是 PHP 擅长的那种服务器端渲染.

然后需要将前端代码自动构建为 HTML 及相关部署在 CDN 上.

标准写法

按说, 完整的写法应该是 J.A.M. Stack, 简单的写法是 JAMStackJAMstack. 但是 jamstack.org 和 Netlify 给出的写法是 Jamstack.

我们的经验

我们曾用过 Next.js 的 Static Exporting 功能做过类似的网站. 但还是有一些的限制的, 后来就再没用过.

现在我们更倾向于 code splitting + lazy loading 这种方案. 与 JAM 最大的不同就是 没有 M. 不是在构建的时候生成了多个 HTML, 还是用 JavaScript 生成 DOM, 也就是 Markup.

我们选择不使用静态 HTML 的问题主要是路由, 普通内容站可以说在构建的时候就规划好了 所有页面, 但功能性站点可不是.

比如一个用户的信息页面我们希望是 https://site/people/jim, 但我们在构建的时候 并不真的清楚有多少个用户, 用户都在 API 中获取. 如果要用 HTML 页面和普通 CDN, 我们只能选择 https://site/people?user=jim 这样的方式.

结论

Jamstack 仅适用于内容型站点. 类似的概念不是什么新东西了, 大多数 CMS 都是这样的.

Jamstack 渊源

Jamstack 是由 Netlify 提出的概念.

在 Netlify 的网站上, 有专门介绍 Jamstack 的页面: https://www.netlify.com/jamstack/.

对于内容展示型网站来说, 如果能遵循原子部署, 那么即便数据量巨大, 理论上也是可以 使用 Jamstack 的.

- software-engineering