VOOZH about

URL: https://read01.com/6m72JN.html

⇱ Vue.js:極大提升開發效率的前端組件化方案 - 壹讀


Saturday, Apr 11, 2026

Vue.js:極大提升開發效率的前端組件化方案

2016/05/21 來源:開發者頭條

相信大多數前端開發人員,都使用過Angular、React或者Vue.js。他們都通過數據綁定的方法,提升了開發效率。而現在,無論在Angular,React,還是Vue.js中,都能非常方便的通過野狗,來實現快速開發。下面,給大家介紹下Vue.js,以及如何在Vue.js中使用野狗。

Vue.js的開發初衷

(創始人自述)

2013年末,我還在Google Creative Lab工作。當時在項目中使用了一段時間的Angular,在感嘆數據綁定帶來生產力提升的同時,我也感到Angular的API設計過於繁瑣,使得學習曲線頗為陡峭。

出於對Angular數據綁定原理的好奇,我開始 「造輪子」,自己實現了一個非常粗糙的、基於依賴收集的數據綁定庫。這就是Vue.js的前身。同時在實際開發中,我發現用戶界面完全可以用嵌套的組件樹來描述,而一個組件恰恰可以對應MVVM中的ViewModel。於是我決定將我的數據綁定實驗改進成一個真正的開源項目,其核心思想便是 「數據驅動的組件系統」。

— — Vue.js創始人 Evan You

MVVM 數據綁定

MVVM的本質是通過數據綁定連結View和Model,讓數據的變化自動映射為視圖的更新。Vue.js在數據綁定的API設計上借鑑了Angular的指令機制:用戶可以通過具有特殊前綴的HTML 屬性來實現數據綁定,也可以使用常見的花括號模板插值,或是在表單元素上使用雙向綁定:

<!– 指令 –>

<span v-text=」msg」></span>

<!– 插值 –>

<span>{{msg}}</span>

<!– 雙向綁定 –>

<input v-model=」msg」>

插值本質上也是指令,只是為了方便模板的書寫。在模板的編譯過程中,Vue.js會為每一處需要動態更新的DOM節點創建一個指令對象。每當一個指令對象觀測的數據變化時,它便會對所綁定的目標節點執行相應的DOM操作。基於指令的數據綁定使得具體的DOM操作都被合理地封裝在指令定義中,業務代碼只需要涉及模板和對數據狀態的操作即可,這使得應用的開發效率和可維護性都大大提升。

圖1 Vue.js的MVVM架構

與Angular不同的是,Vue.js的API里並沒有繁雜的module、controller、scope、factory、service等概念,一切都是以「ViewModel 實例」為基本單位:

<!– 模板 –>

<div id=」app」>

{{msg}}

</div>

// 原生對象即數據

var data = {

msg: 『hello!』

}

// 創建一個 ViewModel 實例

var vm = new Vue({

// 選擇目標元素

el: 『#app』,

// 提供初始數據

data: data

})

渲染結果:

<div id=」app」>

hello!

</div>

在渲染的同時,Vue.js也已經完成了數據的動態綁定:此時如果改動data.msg的值,DOM將自動更新。是不是非常簡單易懂呢?除此之外,Vue.js對自定義指令、過濾器的API也做了大幅的簡化,如果你有Angular的開發經驗,上手會非常迅速。

如何在Vue.js中使用野狗

了解了Vue.js之後,我們看看如何實現Vue.js與野狗的實時數據交互。

安裝

1、如果使用<script> 全局引入: 如果Vue 存在會自動安裝。

<head>

<!– Vue –>

<script src=」https://cdn.jsdelivr.net/vue/latest/vue.js」></script>

<!– Wilddog –>

<script src=」https://cdn.wilddog.com/sdk/js/current/wilddog.js」></script>

<!– WildVue –>

<script src=」https://cdn.wilddog.com/libs/wild-vue/1.0.4/wildvue.min.js」></script>

</head>

2、在模塊化環境中,比如CommonJS

npm install vue wilddog wildvue –save

var Vue = require(『vue』)

var WildVue = require(『wildvue』)

var Wilddog = require(『wilddog』)

// 在模塊化環境中需要使用 user 安裝

Vue.use(WildVue)

使用

var vm = new Vue({

el: 『#demo』,

wilddog: {

//簡單語法

//默認作為數組綁定

anArray: new Wilddog(『url/to/my/collection』),

// 也可以綁定一個查詢

// anArray: new Wilddog(『url/to/my/collection』).limitToLast(25)

// 完整語法

anObject: {

source: new Wilddog(『url/to/my/object』),

// 可選,作為對象綁定

asObject: true,

// 可選,提供一個回調

cancelCallback: function {}

}

}

})

<div id=」demo」>

<pre>{{ anObject | json }}</pre>

<ul>

<li v-for=」item in anArray」>{{ item.text }}</li>

</ul>

</div>

上面的例子會綁定一個Vue實例的anObject 和 anArray 到相應的野狗數據源。另外,Vue實例也可以使用 $wilddogRefs property:

// add an item to the array

vm.$wilddogRefs.anArray.push({

text: 『hello』

})

另外,你也可以使用 $bindAsObject 或 $bindAsArray 方法綁定一個Wildog ref:

vm.$bindAsObject(『user』, myWilddogRef.child(『user』))

vm.$bindAsArray(『items』, myWilddogRef.child(『items』).limitToLast(25))

數據歸一化

數組綁定

在綁定數組中的每一條記錄中都會包含一個 .key property,用來表示這條記錄的key。 所以,如果你有書記在 /items/-Jtjl482BaXBCI7brMT8/ , 這條記錄會存在一個 .key:」-Jtjl482BaXBCI7brMT8″。 如果value是簡單數據類型(boolean,string,number)會保存在.value property 中。如果value 是對象,value對象中每個property 都會直接存放在記錄中:

{

「items」: {

「-Jtjl482BaXBCI7brMT8」: 100,

「-Jtjl6tmqjNeAnQvyD4l」: {

「first」: 「fred」,

「last」: 「Flintstone」

},

「-JtjlAXoQ3VAoNiJcka9」: 「foo」

}

}

The resulting bound array stored in vm.items will be:

[

{

「.key」: 「-Jtjl482BaXBCI7brMT8」,

「.value」: 100

},

{

「.key」: 「-Jtjl6tmqjNeAnQvyD4l」,

「first」: 「Fred」,

「last」: 「Flintstone」

},

{

「.key」: 「-JtjlAXoQ3VAoNiJcka9」,

「.value」: 「foo」

}

]

寫在最後

1、野狗Vue.js項目以及文檔的Github地址:

2、如果有任何問題,可加野狗官方用戶交流群,。裡面有野狗工程師以及全國各地的開發小夥伴。

您可能感興趣
免責聲明:本文內容來源于開發者頭條,文章觀點不代表壹讀立場,如若侵犯到您的權益,或涉不實謠言,敬請向我們提出檢舉
最新文章 / 服務條款 / 私隱保護 / DMCA / 聯絡我們

壹讀/READ01.COM