JAMstack: 发音是 \’jam-stak’\
基于客户端 Js ,可复用 API 和预编译好的 Markup (标记语言)的摩登 web 开发架构。

这里我们说的 “技术栈” 不特指哪个操作系统, web 服务器,后端语言,或者数据库。

JAMstack 不是某些特定技术的组合. 它是一种新的开发网站和 App 的方式,可以实现更高的运行速度和安全性,更低的扩展费用和更好的开发者体验。

什么是 JAMstack?

如果你的网站满足下面三个标准,它就属于一个 JAMstack 架构的网站:

JavaScript

所有请求/响应过程中的功能都用 JS 开发,而且完全运行在浏览器中。可以用任意的 JS 框架,甚至纯 JS 来写。

APIs

所有服务器端功能都被抽象成了可复用的 API ,通过 JS 发 HTTP 请求来调用。可以自建,也可以是第三方的 API 。

Markup 标记语言

模板化的标记语言应该在部署前先编译。如果是内容型网站,一般用网站生成器来编译,如果是 App , 就用构建工具。

例子?

什么样的网站 不属于 JAMstack ?

所有前后端紧密耦合的项目。包括:

使用 WordPress, Drupal, Joomla, 或者 Squarespace 的网站。

基于 Ruby, Node 或者其他后端语言写成的运行于服务器上的 App 。

运行时也要依赖于服务器进行同构渲染的单页面应用。

为何选择 JAMstack?

高速

明明可以在部署前就编译成网页的内容,为何要让用户访问的时候才开始编译呢?说起打开速度,什么方式还能比部署到 CDN 上的静态网页更快呢。

更安全

服务器端功能都抽出成了 API 。我们自己的代码也没有什么可以被攻击的了,至于提供第三方 API 的公司,一般也比较专注,所以也更专业。

扩展起来更便宜

因为就只有一些静态文件需要部署,所以直接多买些 CDN 空间和节点就万事大吉。

更好的开发者体验

更低的耦合,简化开发和调试。