- VueJS 教程
- VueJS - 首頁
- VueJS - 概述
- VueJS - 環境搭建
- VueJS - 簡介
- VueJS - 例項
- VueJS - 模板
- VueJS - 元件
- VueJS - 計算屬性
- VueJS - 偵聽器
- VueJS - 資料繫結
- VueJS - 事件
- VueJS - 渲染
- VueJS - 過渡與動畫
- VueJS - 指令
- VueJS - 路由
- VueJS - 混入
- VueJS - 渲染函式
- VueJS - 響應式介面
- VueJS - 示例
- VueJS 有用資源
- VueJS - 快速指南
- VueJS - 有用資源
- VueJS - 討論
VueJS - 例項
要開始使用 VueJS,我們需要建立 Vue 的例項,稱為根 Vue 例項。
語法
var app = new Vue({
// options
})
讓我們看一個例子來了解 Vue 建構函式中需要包含哪些內容。
<html>
<head>
<title>VueJs Instance</title>
<script type = "text/javascript" src = "js/vue.js"></script>
</head>
<body>
<div id = "vue_det">
<h1>Firstname : {{firstname}}</h1>
<h1>Lastname : {{lastname}}</h1>
<h1>{{mydetails()}}</h1>
</div>
<script type = "text/javascript" src = "js/vue_instance.js"></script>
</body>
</html>
vue_instance.js
var vm = new Vue({
el: '#vue_det',
data: {
firstname : "Ria",
lastname : "Singh",
address : "Mumbai"
},
methods: {
mydetails : function() {
return "I am "+this.firstname +" "+ this.lastname;
}
}
})
對於 Vue,有一個名為el的引數。它獲取 DOM 元素的 id。在上面的例子中,我們有 id#vue_det。它是 div 元素的 id,存在於 .html 中。
<div id = "vue_det"></div>
現在,我們接下來要做的任何操作都會影響 div 元素,而不會影響其外部。
接下來,我們定義了 data 物件。它具有值 firstname、lastname 和 address。
相同的值分配在 div 內部。例如,
<div id = "vue_det">
<h1>Firstname : {{firstname}}</h1>
<h1>Lastname : {{lastname}}</h1>
</div>
Firstname : {{firstname}} 的值將在插值(即 {{}})中替換為 data 物件中分配的值,即 Ria。lastname 也是如此。
接下來,我們有 methods,其中我們定義了一個函式 mydetails 和一個返回值。它在 div 內部分配為
<h1>{{mydetails()}}</h1>
因此,在 {{} } 中呼叫函式 mydetails。Vue 例項中返回的值將列印在 {{}} 中。請檢視輸出以供參考。
輸出
現在,我們需要將選項傳遞給 Vue 建構函式,主要包括 data、template、要掛載的元素、methods、回撥等。
讓我們看看要傳遞給 Vue 的選項。
#data - 此型別的資料可以是物件或函式。Vue 將其屬性轉換為 getter/setter 以使其具有反應性。
讓我們看看如何在選項中傳遞資料。
示例
<html>
<head>
<title>VueJs Introduction</title>
<script type = "text/javascript" src = "js/vue.js"></script>
</head>
<body>
<script type = "text/javascript">
var _obj = { fname: "Raj", lname: "Singh"}
// direct instance creation
var vm = new Vue({
data: _obj
});
console.log(vm.fname);
console.log(vm.$data);
console.log(vm.$data.fname);
</script>
</body>
</html>
輸出
console.log(vm.fname); // 列印 Raj
console.log(vm.$data); 列印如上所示的完整物件
console.log(vm.$data.fname); // 列印 Raj
如果存在元件,則必須從函式中引用 data 物件,如下面的程式碼所示。
<html>
<head>
<title>VueJs Introduction</title>
<script type = "text/javascript" src = "js/vue.js"></script>
</head>
<body>
<script type = "text/javascript">
var _obj = { fname: "Raj", lname: "Singh"};
// direct instance creation
var vm = new Vue({
data: _obj
});
console.log(vm.fname);
console.log(vm.$data);
console.log(vm.$data.fname);
// must use function when in Vue.extend()
var Component = Vue.extend({
data: function () {
return _obj
}
});
var myComponentInstance = new Component();
console.log(myComponentInstance.lname);
console.log(myComponentInstance.$data);
</script>
</body>
</html>
在元件的情況下,data 是一個函式,它與 Vue.extend 一起使用,如上所示。data 是一個函式。例如,
data: function () {
return _obj
}
要從元件中引用 data,我們需要建立其例項。例如,
var myComponentInstance = new Component();
要從 data 中獲取詳細資訊,我們需要執行與上面父元件相同的操作。例如。
console.log(myComponentInstance.lname); console.log(myComponentInstance.$data);
以下是瀏覽器中顯示的詳細資訊。
Props - props 的型別是字串或物件的陣列。它採用基於陣列或基於物件的語法。據說它們是用於從父元件接收資料的屬性。
示例 1
Vue.component('props-demo-simple', {
props: ['size', 'myMessage']
})
示例 2
Vue.component('props-demo-advanced', {
props: {
// just type check
height: Number,
// type check plus other validations
age: {
type: Number,
default: 0,
required: true,
validator: function (value) {
return value >= 0
}
}
}
})
propsData - 用於單元測試。
Type - 字串陣列。例如,{ [key: string]: any }。它需要在建立 Vue 例項期間傳遞。
示例
var Comp = Vue.extend({
props: ['msg'],
template: '<div>{{ msg }}</div>'
})
var vm = new Comp({
propsData: {
msg: 'hello'
}
})
Computed - 型別:{ [key: string]: Function | { get: Function, set: Function } }
示例
<html>
<head>
<title>VueJs Introduction</title>
<script type = "text/javascript" src = "js/vue.js"></script>
</head>
<body>
<script type = "text/javascript">
var vm = new Vue({
data: { a: 2 },
computed: {
// get only, just need a function
aSum: function () {
return this.a + 2;
},
// both get and set
aSquare: {
get: function () {
return this.a*this.a;
},
set: function (v) {
this.a = v*2;
}
}
}
})
console.log(vm.aSquare); // -> 4
vm.aSquare = 3;
console.log(vm.a); // -> 6
console.log(vm.aSum); // -> 8
</script>
</body>
</html>
Computed 有兩個函式aSum和aSquare。
函式 aSum 只是返回this.a+2。函式 aSquare 再次有兩個函式get和set。
變數 vm 是 Vue 的例項,它呼叫 aSquare 和 aSum。同樣,vm.aSquare = 3 呼叫 aSquare 中的 set 函式,而 vm.aSquare 呼叫 get 函式。我們可以在瀏覽器中檢查輸出,其外觀如下面的螢幕截圖所示。
Methods - 方法需要包含在 Vue 例項中,如下面的程式碼所示。我們可以使用 Vue 物件訪問該函式。
<html>
<head>
<title>VueJs Introduction</title>
<script type = "text/javascript" src = "js/vue.js"></script>
</head>
<body>
<script type = "text/javascript">
var vm = new Vue({
data: { a: 5 },
methods: {
asquare: function () {
this.a *= this.a;
}
}
})
vm.asquare();
console.log(vm.a); // 25
</script>
</body>
</html>
Methods 是 Vue 建構函式的一部分。讓我們使用 Vue 物件vm.asquare ()呼叫該方法,屬性a的值在asquare函式中更新。a 的值從 1 更改為 25,並且在下面的瀏覽器控制檯中反映了相同的變化。