作為一名Vue.js的忠實用戶,我想有必要寫點文章來歌頌這一門美好的語言了,下面將給大家介紹Vue.js,希望能夠激發你對Vue.js的興趣。
什麼是Vue:
Vue (讀音 /vjuː/,類似於 view) 是一套用於構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,不僅易於上手,還便於與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為複雜的單頁應用提供驅動。
Vue的吸引力:
我喜歡 Vue 的一點是它吸取了其它框架的優秀之處,並有條不紊的將它們組合在一起。 比如:
- 具有響應式組件化的虛擬 DOM 只提供視圖層, props 和類 Redux 狀態管理與 React 類似。
- 條件渲染和服務與 Angular 類似。
- 受到 Polymer 簡潔及性能方面的啟發,Vue 提供了類似的模式,比如 HTML, 樣式以及 JavaScript 組合在一起。
Vue 相比其它框架的優勢有: 簡潔,提供更多語義化的 API , 比 React 的表現稍好,不像 Polymer 那樣使用 polyfill,相比 Angular 有獨立的視圖。
在對Vue.js 有初步的認識的情況下,我們來說說今天的重點吧:Vue.js教程:渲染,指令,事件。
首先,當然是從 "Hello, world!" 的例子開始啦。運行如下示例:
如果你熟悉 React,你會發現兩者有很多相同之處。通過 mustache 模板以及使用一個變量,可以避免在內容中使用 JavaScript,但是不同的一點是我們直接書寫 HTML 而不是 JSX 。雖然 JSX 易於使用,但是我無需再花時間把 class 改成 className,等等。這樣啟動及運行會更輕量。
現在嘗試一下我喜歡的 Vue 的特性: 循環以及條件渲染。
條件渲染
假如有一組元素,類似導航條,我打算重複利用。合理的做法是放在數組中動態的更新。使用普通的 JS (需要 Babel) ,我們會這樣做: 創建一個數組,然後創建一個空字符串,用來存放使用 包裹的元素,再用 包裹所有內容,使用 innerHTML 方法添加到 DOM 中:
這種方法是可行的,但是有點麻煩。現在試一試 Vue 的 v-for循環:
非常簡潔。如果你熟悉 Angular,你對此應該不陌生。我發現這種條件渲染的方式簡單明瞭。如果你需要更新內容,修改起來也很簡單。
另外一種好的方式是使用 v-model 進行動態綁定。試試下面的例子:
在這個 demo 中你會注意到兩點。首先,可以直接向書中打字並且動態更新文本。Vue 通過 v-model非常方便的實現了
並不是只有簡單的輸入綁定,甚至 v-if可以用 v-show替換,有 v-show的元素不是銷燬或重建組件,而是始終保持在 DOM 中,切換可見性。
Vue 提供了很多指令, 下面是我經常使用的一些指令。很多指令都有縮寫,所以我會一起列出來。在之後的教程中,我們主要使用指令縮寫,所以最好先熟悉一下下面的表格。
也有非常好的事件修飾符和其他 API:
加快開發的方法:
你也可以 自定義指令。
我們會在稍後的例子中使用這些方法!
事件處理
數據綁定雖然很好,但是沒有事件處理也無法發揮更大的用途,因此接下來就試一試! 這是我喜歡的一部分。我們將使用上面的綁定和監聽器來監聽 DOM 事件。
在應用程序中有幾種不同的方法來創建可用的方法。比如在普通的 JS 中,你可以選擇函數名,但是實例方法直觀地稱為 methods!
我們創建了一個名為 increment的方法並且你會注意到函數自動綁定了 this,會指向實例及組件中的 data 。我喜歡這種自動綁定,不需要通過 console.log查看 this的指向。 我們使用縮寫 @click綁定 click 事件。
Methods 並不是創建自定義函數的唯一方式。你也可以使用 watch。兩者的區別是 methods 適合小的、同步的計算,而 watch對於多任務、異步或者響應數據變化時的開銷大的操作是有利的。我經常在動畫中使用 watch 。
讓我們看看如何傳遞事件並且進行動態地樣式綁定。如果你記得上面的表格,你可以使用 :來代替 v-bind,因此我們可以很簡單地通過 :style以及 傳遞狀態,或者 :class綁定樣式 (以及其他屬性)。這種綁定確實有很多用途。
在以下的例子中,我們使用 hsl(),因為 hue calculated as a circle of degrees of color,所以每一個位置都有色值。這種方法很有用,因為任何數值都有效。因此,當我們在屏幕上移動鼠標,背景顏色將相應更新。我們使用 ES6 模板字面量。
你應該看到我們甚至不需要傳遞 @click事件,Vue 將它作為方法的參數(這裡顯示為 e)自動傳遞。
此外,原生方法也可以使用,比如 event.clientX,並且很容易關聯 this實例。在元素的樣式綁定中,CSS 屬性需要使用駝峰命名。在這個例子中,你可以看到 Vue 的簡單明瞭。
實際上我們甚至不需要創建一個方法,如果事件足夠簡單,我們也可以在組件中直接增加計數器的值:
我們沒有使用任何方法而是直接在 @click事件中修改狀態。而且我們也可以在其中添加一點邏輯判斷(因為在購物網站中不會有小於零的東西)。 一旦這種邏輯過於複雜,即使可讀性下降,最好還是寫到一個方法中。這是個很好的選擇。
更多編程資訊、乾貨持續更新中~
閱讀更多 合一學社 的文章
關鍵字: 編程語言 JavaScript HTML