無痛導入的 Vue 無頭表單驗證:VeeValidate
近期在遷移舊的 Element Plus 專案是必要找到另一款客戶端表單驗證方案,而在使用 Shadcn Vue 過程中發現 VeeValidate 是一款針對 Vue 製作的無頭表單驗證工具,你可以攜帶自己的 UI 整合,使用原生表單元件也不是問題。
近期在遷移舊的 Element Plus 專案是必要找到另一款客戶端表單驗證方案,而在使用 Shadcn Vue 過程中發現 VeeValidate 是一款針對 Vue 製作的無頭表單驗證工具,你可以攜帶自己的 UI 整合,使用原生表單元件也不是問題。
對於「多型 Polymorphism」的概念理解像是「要做一件事,但這件事對不同對象來說實踐的方式不同」。具體來說像是各種「形狀」都可以「算面積」,但背後實踐的方法卻不同,而在 Go 當中 interface 就是方法的集合。
第一次看到 Go 的 Receiver 函式會覺得這是啥怪語法,函式名前面還能接收參數?Go 語言提倡「Composition over inheritance」(組合優於繼承),並極力追求程式碼的簡潔性,以此迴避 class-based OOP 所帶來的複雜性。
Go's design has all values passed by value; to achieve passing by reference effect, Pointer must be used explicitly.
Go 設計上一切數值都是直白的「Passing by value」,會有「Passing by value」的效果原因是因為 Reference Types 帶有指標,複製時是複製指標值。要讓 Value Types 有 Passing by Reference 的效果要顯式的使用 Pointer。
Go 设计上一切数值都是直白的「Passing by value」,会有「Passing by value」的效果原因是因为 Reference Types 带有指标,复制时是复制指标值。要让 Value Types 有 Passing by Reference 的效果要显式的使用 Pointer。
TanStack Table is a awesome library that at first glance may seem overly complex but actually saves countless hours of time.
前端生涯中遇到無數攸關資料呈現的需求需要解決,而 TanStack Table 是一款第一眼看起來很多餘複雜但實際上能省下無數時間的一個優質套件,如果有任何「大量表單、中大型表單應用」我會強烈推薦。在實際工作中我透過導入 TanStack Table 在幾天時間內就能把現有表單大多複雜功能重現。
前端生涯中遇到无数攸关资料呈现的需求需要解决,而 TanStack Table 是一款第一眼看起来很多余复杂但实际上能省下无数时间的一个优质套件,如果有任何「大量表单、中大型表单应用」我会强烈推荐。在实际工作中我透过导入 TanStack Table 在几天时间内就能把现有表单大多复杂功能重现。
Using TypeScript to ensure type safety in large frontend projects is common, but API communication can introduce vulnerabilities that compromise type safety.
使用 TypeScript 確保程式型別安全以維持大型前端專案的品質和維護性已經是很成熟且常見的做法,但有一項最常見的破口會讓程式變得脆弱且混亂:「程式間 API 溝通」。TypeScript 本身雖然能靜態檢查程式內部的型別正確性,但只能在程式執行階段驗證資料格式才能真正確保型別安全。
使用 TypeScript 确保程式型别安全以维持大型前端专案的品质和维护性已经是很成熟且常见的做法,但有一项最常见的破口会让程式变得脆弱且混乱:「程式间 API 沟通」。 TypeScript 本身虽然能静态检查程式内部的型别正确性,但只能在程式执行阶段验证资料格式才能真正确保型别安全。
If you browse through Shadcn's component set, you'll find extensive use of a helper function cn, which uses twMerge(clsx(inputs)).
如果翻閱 Shadcn 元件集的元件會發現大量使用到一個輔助函式 cn,背後使用 twMerge(clsx(inputs)),它其實是兩套函式庫的組成,用於更方便建構元件當中 Tailwind 的樣式。為什麼會需要額外的庫和方法來建構元件樣式呢?
如果翻阅 Shadcn 组件集的组件会发现大量使用到一个辅助函数 cn,背后是使用 twMerge(clsx(inputs)),它实质是两个库的组合,方便构建 Tailwind 样式。为什么需要额外的库和方法来构建组件样式呢?