打勾框符號

無痛導入的 Vue 無頭表單驗證:VeeValidate

近期在遷移舊的 Element Plus 專案是必要找到另一款客戶端表單驗證方案,而在使用 Shadcn Vue 過程中發現 VeeValidate 是一款針對 Vue 製作的無頭表單驗證工具,你可以攜帶自己的 UI 整合,使用原生表單元件也不是問題。

人與各種形狀圖示

學習 Go interface 實踐多型

對於「多型 Polymorphism」的概念理解像是「要做一件事,但這件事對不同對象來說實踐的方式不同」。具體來說像是各種「形狀」都可以「算面積」,但背後實踐的方法卻不同,而在 Go 當中 interface 就是方法的集合。

板手圖示

像 Class Method 的奇特 Go Receiver Function

第一次看到 Go 的 Receiver 函式會覺得這是啥怪語法,函式名前面還能接收參數?Go 語言提倡「Composition over inheritance」(組合優於繼承),並極力追求程式碼的簡潔性,以此迴避 class-based OOP 所帶來的複雜性。

指標圖示

學習 Go Pointer 與 Passing by reference 的差異

Go 設計上一切數值都是直白的「Passing by value」,會有「Passing by value」的效果原因是因為 Reference Types 帶有指標,複製時是複製指標值。要讓 Value Types 有 Passing by Reference 的效果要顯式的使用 Pointer。

表格圖示

TanStack Table 拯救前端複雜的資料表格呈現問題

前端生涯中遇到無數攸關資料呈現的需求需要解決,而 TanStack Table 是一款第一眼看起來很多餘複雜但實際上能省下無數時間的一個優質套件,如果有任何「大量表單、中大型表單應用」我會強烈推薦。在實際工作中我透過導入 TanStack Table 在幾天時間內就能把現有表單大多複雜功能重現。

程式文件符號

打造前後端 API 資料合約(GraphQL、tRPC、oRPC)與相關變通方案

使用 TypeScript 確保程式型別安全以維持大型前端專案的品質和維護性已經是很成熟且常見的做法,但有一項最常見的破口會讓程式變得脆弱且混亂:「程式間 API 溝通」。TypeScript 本身雖然能靜態檢查程式內部的型別正確性,但只能在程式執行階段驗證資料格式才能真正確保型別安全。

手指移動符號

透過 Figma MCP 與 Shadcn MCP 透過與 AI 聊天打造前端介面

UI 通常仰賴設計者與前端耗費大量時間精力進行組織與維護,近期工作上進行前端翻新也遇到大量陳舊代碼需要翻皮的作業,問題是誰有時間一個一個重新替換?嘗試串上 Figma MCP 與 Shadcn MCP Server 讓我們透過與 AI 聊天就能精準打造前端介面。

清單符號

網頁渲染太多東西開始卡頓?讓 List Virtualization 來解決

渲染永遠是網頁運算中極度耗費效能的一塊瓶頸之一,而在像是儀表板應用或是大量資料清單如社群媒體版面很容易會遇到前端渲染效率上的問題,透過「只渲染看得到的東西」來減少效能負擔。這種模式通常稱作 List Virtualization(虛擬化看不到的東西)或 Windowing(只渲染視窗內的東西)。

機器人符號

模型上下文協定(Model Context Protocol)是啥?對現代開發者有什麼影響?

AI 解決一些上下文清晰的小題目如 LeetCode 會發現它通常有驚人的效率與準確率,然而在真實情境下 AI 通常沒有這麼厲害,因為環境上下文和需求是模糊的,如何更好的讓 AI 看清與外部世界互動能夠達成更有效率的產出,而 MCP 是一種大型語言模型的統一協定幫助達成該目標。

刷新符號

如何透過 TanStack Query 建構更好的前端資料獲取體驗

先前文章提到:如何優雅的於 Vue 正確的處理資料載入點出了一些獲取外部資料延伸帶來的問題與實際解方,這次我想透過 TanStack Query 的視角挖掘怎麼建構更好的前端資料獲取體驗。本篇教學繼續延續使用 Vue 框架,不過概念對主流框架基本相通。

資料夾與齒輪符號

如何管理 TypeScript 型別檔案?

TypeScript 型別定義檔案通常就是在全局創個 type.ts 檔案並把所有型別丟裡頭,隨處都能引用很方便,但很多專案初期沿用的習慣到了一定規模就會開始混亂,近期也遇到相關的問題因此研究一下一般有哪些方式管理型別檔案。

旗子符號

什麼是 Feature Flag 以及它解決什麼問題?

還記得之前參與某個專案使用 Git Flow 的方式管理產品發布,但隨著時間過去它與持續進行中的主支線差距越來越大,也是在那次問題之後我更認可 Trunk Based Development 流程的概念,其中提到 Feature Flag 是一種很好的技巧用來降低推送功能的風險與控制程度。