Jamstack是什么?
Jamstack 指的是一套用于构建现代网站的技术栈,可能过去的一些文章通常会把它们理解为 JavaScript、APIs、Markup,但其实现在这个概念已经被扩大了,Jamstack 的官网上将它的核心概念归纳为 Pre-rendering、Enhancing with JavaScript、Supercharging with services。

当然掉书袋没什么意思,用人话来解释的话,当下绝大多数 Jamstack 网站,都是这样的技术栈:

  1. 使用网站生成器预渲染整个网站

整个网站在部署前,会被网站生成器(SSG, Static Site Generators)构建和优化为一系列的静态页面和静态资源,这样整个网站可以被托管在 CDN 上,加载速度得到最大程度地优化,安全性也得到保障。

这里的网站生成器包括但不限于:Gatsby、Hugo、Jekyll、Eleventy、NextJS……

  1. 使用 Headless CMS(无头 CMS)管理动态内容

如果想要网站承载动态内容,那么可以接入各种 Headless CMS(无头 CMS),这些 CMS 系统会对外提供 API,网站生成器可以调用这些 API 拉取数据,将动态数据渲染成为静态页面。

这里的无头 CMS 包括但不限于:Ghost、Strapi、Netlify-CMS、TinaCMS……

  1. 使用 HTTP API 增强网站的功能

在登录注册、评论框等需要后端支持的能力上,Jamstack 网站通常会使用微服务提供的 HTTP API,或者一些第三方的 BaaS(后端即服务)能力。

除了以上三个主要特点以外,Jamstack 的网站通常还会有下面的特性:

  • 全站托管于 CDN 上
  • 原子化发布(每次发布都是一次全量、原子性的发布)
  • 灵活的文件缓存策略
  • 基于 Git 的全自动构建、部署流程
特性Jamstack纯静态网站传统动态网站单页应用(SPA)SSR应用
使用CDN全站加速OOXO
方便的内容管理OXOOO
SEO友好OOOXO
首屏渲染速度OOXXO
不需要在线服务OOXOX
安全性OO O

当然,Jamstack 也不是万金油,不可能完美适应所有场景,Jamstack 最适合一些内容更新不太频繁的网站(比如新闻、电商、文档)。它不适合 Feeds 流、聊天室、论坛、个性化推荐这样高度动态化的网站,以及邮箱、编辑器这样偏重型的 Web 应用。

Jamstack的商业价值
在国外的电商行业,Headless Commerce(无头电商)是一个非常火的概念。

所谓的无头电商,就是把用户端的 UI 展现和整个电商后台服务进行解耦,去除掉了 UI 层,也就是“头”,毕竟每个公司都不想自己的网站、购买体验和别人一样。
无头电商只对外暴露一系列的 API,让客户公司可以使用这些 API 构建自己的电商网站。举一些具体的例子,比如 Salesforce 正在推行的 Open Commerce API,逐渐成为现在电商开放 API 的标准。换句话说,这个做法很类似现在国内很多公司在推行的“中台化”、“大中台小前台”的概念。

所以这和 Jamstack 有什么关系呢?

你会发现,Jamstack 推行的这一套技术栈,包括预渲染动态数据的静态页面、无头 CMS、微服务 HTTP API,几乎和无头电商的理念完全一致,或者说,无头电商就是 Jamstack 一个最贴切的应用场景。

在前段时间 Vercel 举办的 Next.js Conf 上,主要赞助商除了 AWS、Github、Firebase 这样的云平台以外,大部分都是适用于 Jamstack 的第三方 API 提供方、或者一些无头 CMS,这也从侧面体现了 Jamstack 目前在国外的生态繁荣。
但是在国内市场上,或许不那么乐观:国内 Web 网站本身就处于一个很尴尬的状态,各大公司的主要业务都是以移动端 App 为主要入口,Web 网站缺少流量来源,或许只有一些特性类型的业务(比如新闻、电商网站)需要 Web 站点;电商市场方面,国内大部分中小型公司都处于严重缺乏信息化的状态,更多依赖于阿里、京东这样的大平台方提供的基础系统,还远远没有自建整套流程的需求,无头电商也就无从谈起。

尾声
从技术角度上讲,Jamstack 本质是一种增强的静态网站,它的出现很大程度上得益于各大云厂商提供的云上能力,包括更容易管控的 CDN/DNS、Serverless Function、DevOps 工具等等。

随着国内相关云计算基础设施的成熟,Jamstack 在国内几家云平台的支持程度也会慢慢提高,我们完全可以期待未来 Jamstack 部分替代传统的 WordPress 等建站工具,变成新一代的建站技术栈。

标签: none

添加新评论