替 blog 找設計詞彙:從 Vuetify 到 Magazine 風的一次設計診斷
我這個 blog 改版想做很久了。每次打開自己的站,都覺得「不對」,但說不出哪裡不對。看別人的 blog ──Josh Comeau、Robin Rendle、那些做得好的個人站 ──就知道差在哪一個層級的東西,但翻不出名字。
我這個 blog 改版想做很久了。每次打開自己的站,都覺得「不對」,但說不出哪裡不對。看別人的 blog ──Josh Comeau、Robin Rendle、那些做得好的個人站 ──就知道差在哪一個層級的東西,但翻不出名字。
在 Nuxt 3 的 SPA 專案中,Layout 與 Page 之間的高度管理是個容易踩坑的地方。本文記錄一個常見問題:各個 Page 各自用 h-screen 控制高度,導致出現多餘的外層 scrollbar,以及修正過程中學到的 CSS 定位觀念。
在一個 Vue 3 專案中,我把一行 .sort() 改成 .reverse(),結果瀏覽器直接凍結。這篇文章記錄這個問題的根本原因:在 reactive context 中對陣列做 in-place mutation 可能觸發無限迴圈,以及為什麼 ES2023 的 toReversed() / toSorted() 是更安全的選擇。
最近在做一個多 Tab 頁面的「下載圖表」功能時,踩到一個 Chart.js 的經典坑:當圖表所在的 Tab 被隱藏時,匯出的圖片是空白的。
最近在維護一個關鍵字搜尋功能時,遇到了一個經典的工程問題:手寫的 Regex 驗證邏輯越來越難維護,每次修 bug 都像在拆炸彈。
在後端開發中,我們常遇到需求不斷疊加,導致原本單純的類別(Class)變成了「上帝類別(God Class)」,職責混雜且難以測試。最近我在處理一個將資料上傳到 PrimaryAPI(主要資料平台)與 BackupService(備份服務)的功能時,就遇到了「堆疊式複雜度」的問題。本文將分享如何利用 Observer Pattern(觀察者模式)1 與 Mediator Pattern(中介者模式)2 來優化架構,達成高內聚低耦合的設計。
2026 年剛開始,我就收到了一份「大禮」。
在開發 Vue 組件時,我遇到了一個有趣的類型推斷問題,這讓我深入研究了 TypeScript 5.5 引入的 Inferred Type Predicates 功能。
最近在重構公司專案的 API 層時,遇到了一個有趣的問題:原本用 axios 可以正常運作的程式碼,改用 Nuxt3 的 $fetch 後卻報錯了。這個問題讓我深入研究了 $fetch 和 axios 在底層實作上的差異。
最近在重構專案時,發現自己一直習慣用 @ 來做 import alias,但 Nuxt3 的官方文件卻都用 ~。這讓我開始好奇:這兩個符號到底有什麼差異?各個框架的慣例又是什麼?