跳到主要内容
所有文章

这个网站是怎么做的

· 约 4 分钟

以组织身份注册 Apple 开发者账号时,Apple 会检查公司的网站。所以一个真正的网站是我的优先事项。以下是这个网站的做法。

技术选择

  • Next.js,使用 App Router。
  • Cloudflare Workers 负责运行,搭配 OpenNext adapter。
  • next-intl 处理多语言。
  • Tailwind CSS 处理样式。

我每个网站都用同一套技术:这个网站,以及每个 App 的网站。只有一种做法,要记的事就少,会坏的地方也少。

第一天就支持三种语言

网站一开始有英文、繁体中文和简体中文。英文没有前缀(/blog),其他语言有(/zh-Hans/blog)。所有文字都放在每种语言一个的 JSON 文件里,从不写死在组件中。之后要加新语言,只要多一个文件。

后来我验证了这句话,加上日文和韩文。每种语言就是一个新文件,再加上一款和网站其他部分搭配的圆体字。

没有数据库,也没有 CMS

博客文章就是代码里的文件。写一篇文章,就是加一个文件然后部署。对一个人来说,这比任何 CMS 都简单,也没有东西会被黑或要付费。

(几乎)不用写代码的流量分析

我想知道大家读了哪些文章。网站通过 Cloudflare 的标签管理工具 Zaraz 使用 Google Analytics 4。GA4 是在 Cloudflare 后台设置的,不在我的代码里,之后要调整也不必重新部署。

两个意外

1. Zaraz 没有出现。Zaraz 本来应该自动把它的脚本加进每个页面,但我的网站没有。我的页面是由 Worker 生成的,脚本一直没被加上。解法是在页面的 head 里加一行:<script src="/cdn-cgi/zaraz/i.js">。现在每个页面都会加载了。

2. Cookie 窗口挡住了整个页面。欧盟和英国的访客要先同意,流量分析才能运行。Zaraz 有自己的同意窗口,但它会盖住整个页面、和我的设计不搭,而且语言跟着浏览器走,不是跟着网页。所以我改成在页面底部放一条小横幅,网站的每种语言都有。选择仍然由 Zaraz 记录,网站只负责提问,而且「拒绝」和「接受」一样容易。

这两个问题都是网站上线后才出现的。教训:读完文档,还是要在正式环境实测。

成本

Workers 付费方案每月 5 美元,涵盖我所有的网站。域名第一年 1 美元。

简单、便宜、快速。一家小公司的网站,需要的就这些。

想看下一篇?在 X 上关注 @allright_eric,或订阅 RSS。