以組織身分註冊 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。