花園
8 則筆記正在生長。清除篩選 ✕
標籤nestjs平台rootnote架構前端✕踩雷程式碼走讀projectdddnuxt心路seo安全資料庫部署ios共筆dockerlinuxpythonssrtradewindows構想流程測試資料視覺化需求分析成熟度種子扎根✕常青
- 行動裝置收尾雷合集:16px、自動聚焦與 passive 事件 把整個站在手機與 iPad 上收尾的過程,攢下一小把「文件上不會告訴你、真機一碰就爆」的雷。集中記錄,每一條都是實際踩過的。 輸入框字級 < 16px,iOS 自動放大頁面 Safari 的「貼心」:聚焦到字級小於 16px 的輸入框,整頁自動 zoom in 幫你看清楚——然後不會自動 zoom 回去。版面精心調的 …
- 深色模式的防閃爍:一段必須跑在最前面的腳本 深色模式的難點不在 CSS——變數換值而已——在於 SSR 的第一幀。伺服器不知道訪客偏好哪個主題,吐出的 HTML 只能預設淺色;等 JS 掛載後讀 localStorage 再切換,深色使用者就會看到「白屏一閃、再轉黑」。這一閃在深夜的螢幕上刺眼得像個 bug。 解法:在首次繪製前釘住主題 一段幾行的 inline…
- iPad 上拖不動的圖譜節點:touch-action 對 SVG 子元素無效 首頁的知識圖譜可以拖曳節點——桌機上手感很好,iPad 上完全拖不動:手指一動,整頁跟著捲,拖曳中斷。 教科書解法為什麼失效 標準做法是對可拖曳元素設 touch-action: none,告訴瀏覽器「這個元素上的觸控手勢交給 JS,不要啟動捲動」。桌機的觸控模擬器一切正常——然後 iPad Safari 直接無視它。…
- 程式碼走讀:目錄高亮,與一個永遠不亮的最後一章 筆記頁右欄的目錄會跟著捲動高亮當前章節。第一版用 IntersectionObserver——教科書推薦的現代解法——然後在真實內容上翻了車,值得完整走讀一次。 核心判定:最後一個過線的標題 ts NoteToc.vue(節錄) function recomputeActive(): void { let idx = …
- 程式碼走讀:一個 composable 裡的樂觀更新與回滾 筆記頁的rootnote-origin|澆灌按鈕背後是一個五十行的 composable,麻雀雖小,前端狀態管理的幾個經典題都在裡面。 樂觀更新:先變臉、再對帳 ts useNoteStats.ts(節錄) async function water(): Promise<void { if (watered.value…
- 編輯器的溫室工程:自動儲存、補全與一個吃字的 bug 後台的筆記編輯器是全頁雙欄:左邊寫、右邊markdown-pipeline|同管線預覽。它是我在這個專案裡對「寫作手感」投資最重的地方,幾個工程點值得記。 自動儲存:debounce 之外的三個細節 打字停頓 1.5 秒送一次 PATCH,這是基本款。魔鬼在邊角: - flush 時機——發佈前、離開頁面前,必須先把未…
- 一條 markdown 管線:後台預覽與前台渲染禁止分家 筆記用 markdown 寫,渲染發生在兩個地方:公開前台的文章頁、後台編輯器的即時預覽。這裡有一條我立得很早的紅線:全站只准有一條 markdown 管線。 為什麼這麼嚴 兩套實作的漂移是漸進且不可逆的:前台升級了語法高亮、後台忘了;後台的 wikilinks-backlinks|wikilink 樣式調了、前台沒跟…
- 前端殼的三道客製縫:整頁、碎片、配色 後端有 forge-monorepo|platform 套件,前端對應的是 web-kit——登入、版型、選單、主題這些每個後台都要的殼。難題跟後端不同:前端的客製需求是視覺的、瑣碎的、無孔不入的。如果每個 app 想改個顏色都要 fork 整個殼,套件就死了。 我的答案是把客製收斂成三道明確的縫,由粗到細: 1. 整…