Jamstack?

date
May 7, 2020
slug
jamstack
status
Published
tags
summary
type
Post
好像是一个月前看到的这个词语。 Jamstack。
我没有找到翻译。但是居然有一个网站( https://jamstack.org/ )专门介绍什么叫做 Jamstack。
简单点说就是不使用服务器来部署站点,所以静态站点最合适了。npm run build 一下,然后把静态文件部署好。如果需要访问接口怎么办? 既然不能用服务器,那我们只能用 Serveless 服务,比如 Amazon Lambda,Google App Engine,其实和用 PHP/Python/Node.js 去写一个后端接口差不多。简单点说就是在他的框架内实现后端接口。
我感觉大约十年前的 GAE, SAE 就可以实现这样的站点,后来提供各种静态网站生成器服务(比如 Github.com 的 gh-pages) 的也是 Jamstack 了。
正好我最近想关掉 GCE 上的一台服务器,但是有两个小应用又得有地方放才是。 我就选择了 Zeit(在我用的时候突然声称自己融资成功并改名成了 Vercel),主要的原因是很久以前我就觉得他的界面好看,而其他的服务商我还没用过。
我的应用原来是用 umi.js 和 ant design mobile 写的,而他本身就直接支持 umi.js 的部署,所以静态页面的迁移非常顺利,几乎没有改动什么。我原来的应用是分开前端和后端的(Node.js,Express), 所以我这回得改用 Zeit 的 Serveless Functions 。还好我只有几个接口,而且他的 Node.js 的环境和 Express 框架几乎一摸一样,所以也不算麻烦。 最大的好处在于我原来必须分离前端和后端的代码,而现在只有在一个根目录下建立一个 api 的目录,在其中放置 Serveless Functions 代码就可以了。 唯一觉得麻烦的是 Zeit(Vercel) 没有提供存储服务,而我原来是用 MySQL/MariaDB 存储数据的。所以我又必须开通了一个 Leancloud 的国际版的存储服务来管理数据。在本地环境运行开发模式时遇到了一些坑(主要是我自己对 umi.js 不够熟悉)。发布应用是非常方便的,推送代码到 github 就自动完成部署了(但是我没找到怎么修改成不使用 master 分支来部署)。而且部署完成后居然就直接支持 https 了。
下面谈谈使用 Vercel 的感受。
  1. 免费版就很良心了,简单的应用够用。
  1. 开发很方便。
  1. 没有存储是个问题。
  1. 静态文件和 Serveless Functions 通过 Vercel 的 CDN 分发,但是国内没有节点,所以也不能指望速度有多快;
  1. 拜托千万别被墙啊。

© adow 2021 - 2022 | 苏ICP备16013337号-1