上節回顧
昨天我把Vue.js
學習中介紹篇
大致看了一遍,當時其實沒有上傳成功,莫名其妙的草稿也儲存失敗了,變成了半張的殘缺稿,然後到早上到公司隨意點了一下還是沒有成功,也沒太在意,然後…然後莫名其妙就傳上去了???
本篇目標
今天準備把Vue例項篇
走一邊
我知道我並不強大,但我想努力變強大。
建立一個Vue例項
一個 Vue 應用由一個通過 new Vue 建立的根 Vue 例項,以及可選的巢狀的、可複用的元件樹組成。
好,我來重複一遍:一個Vue應用
應該是一個new Vue根例項(樹根)
和一堆亂七八糟的元件(樹杈子)
組成。
建立Vue例項的基礎格式:連我都覺得太簡單所以不寫了
。
var data = {
班級名稱 : `狠一班`,
班級學生 :
[
{姓名 : `我老猛` , 性別 : `女`},
{姓名 : `我老萌` , 性別 : `男`}
],
班主任 : `詞窮`
}
var vm = new Vue({
data : data
})
由此可見data
應該就是一個屬性的集合
而且各種型別的屬性一鍋燉
,嗯…,
逗號分割。
至於下面說的修改資料值,還是實際試一下比較好。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<div id="app">
{{message}}
<br />
<span v-bind:title="message">
滑鼠懸停幾秒據說有看頭?
</span>
<br />
<p v-if="seen">Now you see me - 我倫</p>
<ol>
<li v-for="todo in todos">
{{todo.text}}
</li>
</ol>
<button v-on:click="reverseMessage">啥叫逆轉訊息???</button>
<br />
<input type="text" v-model="message" />
<ol>
<todo-item v-for="item in items"
v-bind:todo="item"
v-bind:key="item.id">
</todo-item>
</ol>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
Vue.component(`todo-item`, {
props: [`todo`],
template: `<li>{{todo.text}}</li>`
})
var data = {
message: `Hello Vue!` + new Date().toLocaleString(),
seen: true,
todos: [
{ text: `第一個` },
{ text: `第2個` },
{ text: `第三個` }
],
items: [
{ id: 0, text: `青椒` },
{ id: 1, text: `茄子` },
{ id: 2, text: `蕃茄` }
]
}
var app = new Vue({
el: `#app`,
data: data,
methods: {
reverseMessage: function () {
this.message = this.message.split(``).reverse().join(``)
}
}
})
</script>
</body>
</html>
拿我倫
做測試吧,F12
– Console
– data.seen
– app.seen=false
– data.seen
– data.seen=true
– app.seen
可以看到結果,兩個物件無論修改哪一個,都會影響另外一個,同時改變了頁面上我倫的顯示隱藏。
只有當例項被建立時
data
中存在的屬性才是響應式。
這裡我現在還不知道怎麼在執行時向data
中追加屬性物件,所以沒有辦法提供程式碼驗證了…(短時間內沒查出來)不過我記住這個點了。
Object.freeze()
var data = {
msg : `you have a new message.`,
num : 3,
seen : true
}
Object.freeze(data)
var app = new Vue({
el : `#app`,
data : data
})
字面意思 – 凍結
,貌似無法單獨凍結data
下的指定屬性,比如:Object.freeze(data.msg)
,雖然不抱錯,但是還是可以改值的,所以只能以data
為單位凍。
data
凍結後的結果:F12
– app.msg = `some other.`
會報錯,錯誤挺容易理解的,大概是這屬性是只讀
的,然而我們還可以用data.msg = `some other.`
,可以看到這裡不會報錯,不過當輸入data.msg
列印值時發現並沒有修改其值。
Vue官方有提供一下內建例項屬性與方法,他們都是
$
開頭,不過都是通過Vue例項.
出來的
Vue的生命週期
那圖有些看不懂,先大致記一下生命週期的鉤子的執行順序吧:
從前到後依次是:
beforeCreate
->created
->beforeMount
->mounted
->beforeUpdate
->updated
->beforeDestroy
->destroyed
建立前
->建立後
->裝載前
->裝載後
->更新前
->更新後
->銷燬前
->銷燬後
小節
不知不覺又12點了,每天都感覺時間很少,總是不夠用。
今天並沒有些什麼實質性的程式碼,幾乎只是一些理論,而且並不多。
加油吧~