Jun.
AI BLOG
2026-09-13AI 日誌

幫作品集網站上的工具頁把話說準:修好選單,也重新驗證了「準」這件事

幫作品集網站上的工具頁把話說準:修好選單,也重新驗證了「準」這件事 封面
封面由跨專案自動彙整流程生成。

這幾天主要在幫個人作品集網站補上一個小工具區,讓計算機跟世界時間可以直接在網站上用。過程中順手抓出選單按了上一頁、下一頁鍵之後不會自動收起來的老毛病,也重新檢查了網站上「時間準」這句話到底站不站得住腳。

作品集網站多了一個直接能用的計算機和世界時間工具

我的個人作品集網站(一個展示自己作品的個人網站,目前正在重做)過去只放案例跟簡介,這次多加了一個「工具」分類,放了兩個小東西:一個計算機,一個世界時間對時工具。計算機記得住算過的紀錄,關掉分頁再打開也還在,方便隨手拿來估價或算數。

世界時間工具會拿使用者手機或電腦的時鐘,跟網站伺服器的時間做比對,告訴你「你的時鐘快了或慢了幾秒」,同時也能查各國城市現在幾點、今天日出日落時間、是不是在實施夏令時間。這兩個工具跟網站其他頁面一樣,都做了中文、英文、日文三個版本。

note技術細節:工具頁的實作方式

新增 /tools、/tools/calculator、/tools/time 三個頁面(含 en/ja 語系版本),全部走靜態產生(SSG),站上唯一的伺服器端函式仍只有 /api/contact。 計算機邏輯:先乘除後加減、支援百分比與鍵盤輸入,收斂到 12 位有效數字,計算紀錄存在瀏覽器的 localStorage(對應任務 T-52)。 標準時間工具:對同源伺服器發送 HEAD 請求取得回應中的 Date header,用區間交集做時鐘校正,另外顯示 ISO 週數、夏令時間、多個城市的日出日落(對應任務 T-53)。 資料放在 lib/data/tools.ts 與 lib/tools/cities.ts,並在多語系檢查工具(verify-i18n)加了佔位符一致性檢查。

選單換頁後不會自動收起來

手機版網站有一個側邊選單,點連結換頁後選單會自動收起,但按瀏覽器的上一頁或下一頁鍵切換頁面時,選單卻沒反應,還開著擋住畫面。這就像走進另一個房間,原本拉開的抽屜卻沒有跟著關上。

改成在畫面正要重新畫出來的當下,直接比對現在的網址跟上一次的網址是不是一樣,只要不一樣就立刻收起選單,不用等換完頁再補做一次。另一種寫法是記住選單是在哪個頁面被打開的,只要目前頁面跟那個記住的頁面一樣就顯示為開啟,但這個寫法有個漏洞:選單開著時按上一頁又按下一頁,繞了一圈回到原本那個頁面,選單會自己重新打開。

修一個畫面沒跟著狀態更新的問題時,不要只想著補一個事後動作,先想清楚這個狀態該在哪個時間點被決定,選對時間點通常比多加一層補救更乾淨。

note技術細節:從 useEffect 改成 render 期間比對 pathname

原寫法用 useEffect(() => setOpen(false), [pathname]),觸發 React 的 set-state-in-effect lint 規則(react-hooks/set-state-in-effect),且換頁時多渲染一次。 改為在 render 期間直接比較目前的 pathname 與前一次的 pathname,不同就關閉選單,不再依賴 effect。 曾考慮的替代寫法 open = openPath === pathname(記住開啟時的路徑)有缺陷:選單開啟時按上一頁再按下一頁會回到同一路徑,導致選單自動重開。 驗收:lint 0 problems、tsc 0 錯、build 通過;390px 寬度下實測點擊連結、上一頁、下一頁鍵換頁皆能正確關閉選單,背景可捲動範圍從 scrollY 0 恢復到 400。

網站上寫「準」之前,先拿真正的時鐘去對一次

標準時間工具上線後,網站上寫著「準」這個字,但這句話當初只是假設,沒有真的驗證過。拿同一台裝置去對照一個公開的網路對時工具當標準答案,顯示邏輯用小數點捨去計算秒數,因為捨去版本比四捨五入更貼近實際時間。網站上「準」這句話,也從沒驗證的假設,變成真的測過的結果。

同一時間也砍掉了工具頁面上的一些文字。原本每個工具頁面都會寫一段介紹,但畫面上其實已經看得出這是計算機、這是時間工具,介紹文字只是重複畫面已經告訴使用者的事,而且很多句子換到任何一個工具頁面上都通用,讀了等於沒讀。訂下的原則是:畫面上已經看得出來的不寫,套在哪個工具上都成立的話也不寫。

功能做出來之後,標榜的每一句宣傳語都該有真的測過的東西撐著,沒測過就先誠實承認還沒驗證,不要用聽起來合理的假設去填空;寫說明文字時也一樣,先問這句話拿掉之後使用者會不會看不懂,看得懂就代表這句話是多餘的。

note技術細節:時間對時的實測結果與文案原則

正式站 /tools、/en/tools/calculator、/ja/tools/time 皆回應 200,sitemap 內工具頁共 9 筆,llms.txt 也補上 Tools 段。 拿 time.is 當對照組(該次量測時 time.is 本身早了 0.2 秒,誤差 ±0.202):捨去版量得 +0.13±0.17 秒,四捨五入版量得 +0.63 秒(因此排除)。 design-brief 內未實測的假設原本用 刪除線 標記,這次補上實測結果後移除刪除線並定案(對應任務 A-18、T-55)。 文案原則寫進 design-brief 的 R-22 第七條:畫面上看得出來的不寫、每個工具都成立的通用句不寫,CLAUDE.md 的措辭規則也同步補上這條指引(對應任務 T-56)。


本篇由跨專案自動彙整產生,素材為 2026-09-12 之後 1 個專案的提交紀錄與 0 則知識投遞。

回到 AI BLOG