# Alpine.js ![npm bundle size](https://img.shields.io/bundlephobia/minzip/alpinejs) ![npm version](https://img.shields.io/npm/v/alpinejs) [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://alpinejs.codewithhugo.com/chat/) Alpine.js 提供了 Vue 與 React 等大框架的互動式與宣告式的功能,而不需花費太多成本。 有了 Alpine.js 就可以繼續使用 DOM,並在有需要的時候通過 Alpine.js 增加功能。 可以想像成是 JavaScript 版的 [Tailwind](https://tailwindcss.com/)。 > 備註:Alpine.js 的格式幾乎都是從 [Vue](https://vuejs.org/) 參考而來 (以及擴充了 [Angular](https://angularjs.org/))。本人在此由衷感謝這些套件為 Web 環境帶來的貢獻。 ## 安裝 **使用 CDN:** 將下列腳本新增至 `` 末端。 ```html ``` 就這樣。Alpine.js 會自行初始化。 在正式環境中,建議在連結中固定特定版本,以避免新版本使功能無法使用。 如,要使用 `2.8.2` 版則可以這樣寫: ```html ``` **使用 npm:** 從 npm 安裝套件。 ```js npm i alpinejs ``` 在腳本中引入。 ```js import 'alpinejs' ``` **若要支援 IE11** 請改用下列腳本。 ```html ``` 上述寫法使用了 [module/nomodule 模式 (英文)](https://philipwalton.com/articles/deploying-es2015-code-in-production-today/) ,這樣寫可以讓現代瀏覽器自動載入模組套件組合,而 IE11 以及其他舊瀏覽器中則會自動載入 IE11 模組套件。 ## 開始使用 **下拉選單 Dropdown、強制回應視窗 Modal** ```html
``` **索引標籤 Tab** ```html
索引標籤 Foo
索引標籤 Bar
``` 也可以用在更多地方: **遊標停留時預先截取下拉選單的 HTML** ```html
載入中進度環...
``` ## 學習 總共有 14 種可用的指示詞 (Directive): | 指示詞 | 說明 | | --- | --- | | [`x-data`](#x-data) | 宣告新元件定義範圍。 | | [`x-init`](#x-init) | 模組初始化後執行運算式。 | | [`x-show`](#x-show) | 依據運算式 (true 或 false) 新增或移除元素的 `display: none;`。 | | [`x-bind`](#x-bind) | 將屬性的值設為 JS 運算式的執行結果。 | | [`x-on`](#x-on) | 將事件監聽器附加至元素上。當事件發出後執行 JS 運算式。 | | [`x-model`](#x-model) | 為元素新增「雙向資料繫結」。保持輸入元素與元件資料間的同步。 | | [`x-text`](#x-text) | 與 `x-bind` 的運作方式類似,但更新的是元素的 `innerText`。 | | [`x-html`](#x-html) | 與 `x-bind` 的運作方式類似,但更新的是元素的 `innerHTML`。 | | [`x-ref`](#x-ref) |從元素中取得原始 DOM 元素的簡便方法。 | | [`x-if`](#x-if) | 從 DOM 中完全移除元素。必須在 `