跳到主要內容
所有文章

這個網站是怎麼做的

· 約 4 分鐘

以組織身分註冊 Apple 開發者帳號時,Apple 會檢查公司的網站。所以一個真正的網站是我的優先事項。以下是這個網站的做法。

技術選擇

  • Next.js,使用 App Router。
  • Cloudflare Workers 負責執行,搭配 OpenNext adapter。
  • next-intl 處理多語言。
  • Tailwind CSS 處理樣式。

我每個網站都用同一套技術:這個網站,以及每個 App 的網站。只有一種做法,要記的事就少,會壞的地方也少。

第一天就支援三種語言

網站一開始有英文、繁體中文和簡體中文。英文沒有前綴(/blog),其他語言有(/zh-Hant/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。