很多人覺得 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 再度受到大家重視