點燈坊

失くすものさえない今が強くなるチャンスよ

Alpine 之美

Sam Xiao's Avatar 2024-02-08

很多人覺得 Alpine 將 JavaScript 寫在 HTML,會如同 React 的 JSX 一樣將來然以維護,事實上並非如此,Alpine 將 JavaScript 與 HTML 寫在一起反而是一種美感。

Version

Alpine 3.13.5

JSX

  • JavaScript 跟 HTML 混在一起的難以維護,是因為 JSX 將 JavaScript 當成 template language 使用,但 Alpine 並不是,Alpine 另外提供如 Vue 的 directive 作為 HTML 的 template language
  • Alpine 的 JavaScript 與 HTML 混在一起是 function 部分,如一般 function 則寫在 x-data 內,event handler function 則直接寫在 @click 內,只要靠 Prettier 排版妥當,代碼可讀性很高
  • 也由於 function 都寫在 HTML 內,因此 function 在 HTML 就找得到,不必跳到其他 block 甚至其他檔案

Copy & Paste

  • 自從 Tailwind 將 style 寫在 HTML 內後,大家才發現原來只要將 component 加以 Copy & Paste 就可使用,非常方便,但 JavaScript 卻又得另外處理
  • 但 Alpine 也將 JavaScript 寫在 HTML 之後,情況就改觀了,要複製 component 只要 Copy & Paste 即可,如此 Tailwind 與 Alpine 都一起複製,隨貼即用

Semantic HTML

  • Tailwind 與 Alpine 讓大家的眼光再度回到 HTML,因此 Semantic HTML 再度受到重視。Semantic HTML 讓 Tailwind 與 Alpine 的可讀性更高

Conclusion

  • Tailwind 算是這種 style 的始作俑者,讓大家發現原來回到 HTML 更好維護,Alpine 則算是最後一哩路,將 JavaScript 也回到 HTML 懷抱,但 Alpine 卻很聰明的沒讓 JavaScript 成為 HTML 的 Template Language,避免重蹈 JSX 覆轍,也讓 Semantic HTML 再度受到大家重視