iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
0
Modern Web

Vue.js 30天系列 第 4

Vue.js 04 - Vue Instance

前面介紹 Vue 的元件結構,要多少都隨你掛載,直到滿意。
但今天要多講一點 Vue Instance

Vue app 都源於一個根節點,Vue Instance 則是透過 Vue Constructor (建構式) 產生的物件,他具備哪些初始資料、方法、掛載到哪個 DOM 等設定,都可以透過 JSON 物件傳入。

const vm = new Vue({
	el: 'app',             /* 掛載點 */
	data: { /* ... */ },   /* 初始資料 */
	methods: { /* ... */}, /* 方法 */
});

既然是透過 JSON 傳入,你可能會想把它拆出來。

const data = {
	user: 'ralph',
	role: 'developer'
};

const vm = new Vue({
	el: 'app',
	data: data
});

的確可以,你可以透過物件比較與賦值,測試看看特性是否相同

vm.role === data.role

vm.role = 'PM'
data.role

data.role = 'Developer
vm.role

乍看之下完全一樣,細看你可以發現,Vue 幫我們在原本的資料加了料。

/* 原本data */
{
	user: 'ralph',
	role: 'developer'
}
/* 加料後的vm.$data */
{
	__ob__: Observer,
	user: 'ralph',
	get user: function reactiveGetter(),
	set user: function reactiveSetter(newVal),
	/* ... */
	
}

當我們加上新屬性

data.level = 1

會發現賦值並沒有更新畫面。

Vue Instance 的 Reactivity 魔法源自這些「好料」,後面會更進一步說明原理。

另外幫你加了其他屬性和方法,都帶有$前綴的命名慣例,詳細可參考 官方API文件


上一篇
Vue.js 03 - 開發環境
下一篇
Vue.js 05 - 資料綁定(data binding) 與 樣板(template) 語法
系列文
Vue.js 30天30

尚未有邦友留言

立即登入留言