1 Vue实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue实例</title>
<script src='../vue.js'></script>
</head>
<body>
<div id="root">
<!-- v-on可简写为@ -->
<div @click="handleClick">
{{message}}
</div>
<item></item>
</div>
<script>
Vue.component('item', {
template: '<div>hello item</div>'
})
/**
* 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始
*/
var vm = new Vue({
/**
* el: '#root'表示Vue实例将挂载到id为"root"的HTML元素
* 这个HTML元素可以是任何元素 如div、section
* Vue实例挂载到该元素后,Vue实例就可以操作该元素及其子元素,以及响应用户的交互行为
*/
el: '#root',
/**
* 当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中
* 当这些 property 的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。
* 只有当实例被创建时就已经存在于 data 中的 property 才是响应式的
*/
data: {
message: 'hello world'
},
// 在 `methods` 对象中定义方法
methods: {
handleClick: function () {
alert("hello")
}
}
})
</script>
</body>
</html>
一个 Vue 应用由一个通过 new Vue
创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。
所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 (一些根实例特有的选项除外)。
组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 <item>
。
<div id="root">
<!-- v-on可简写为@ -->
<div @click="handleClick">
{{message}}
</div>
<!-- 使用item组件 -->
<item></item>
</div>
2 Vue实例生命周期
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue实例生命周期函数</title>
<script src='../vue.js'></script>
</head>
<body>
<div id="app">Hello World</div>
<script>
// 生命周期函数:Vue实例在某时间点自动执行的函数
var vm = new Vue({
el: "#app",
template: "<div>{{test}}</div>",
data: {
test: "hello world"
},
beforeCreate: function() {
console.log("beforeCreate");
},
created: function() {
console.log("created");
},
beforeMount: function() {
console.log(this.$el);
console.log("beforeMount");
},
mounted: function() {
console.log(this.$el);
console.log("mounted");
},
beforeDestroy: function() {
console.log("beforeDestroy");
},
destroyed: function() {
console.log("destroyed");
},
beforeUpdate: function() {
console.log("beforeUpdate");
},
updated: function() {
console.log("updated");
}
})
</script>
</body>
</html>
这些方法都是单独定义,不放在 methods 对象里。
见鬼了,其它几个生命周期点呢?为啥没打印出来呢?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue实例生命周期函数</title>
<script src='../vue.js'></script>
</head>
<body>
<div id="app">Hello World</div>
<script>
// 生命周期函数:Vue实例在某时间点自动执行的函数
var vm = new Vue({
el: "#app",
template: "<div>{{test}}</div>",
data: {
test: "hello world"
},
// 第一个被调用
beforeCreate: function() {
console.log("beforeCreate");
},
created: function() {
console.log("created");
},
template
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue实例生命周期函数</title>
<script src='../vue.js'></script>
</head>
<body>
<script>
// 生命周期函数:Vue实例在某时间点自动执行的函数
var vm = new Vue({
el: "#app",
template: "<div>{{test}}</div>",
data: {
test: "hello world"
},
beforeCreate: function() {
console.log("beforeCreate");
},
上面这么写和下面一样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue实例生命周期函数</title>
<script src='../vue.js'></script>
</head>
<body>
<script>
// 生命周期函数:Vue实例在某时间点自动执行的函数
var vm = new Vue({
el: "#app",
data: {
test: "hello world"
},
beforeCreate: function() {
console.log("beforeCreate");
},
vm.$destroy()
完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。
触发 beforeDestroy
和 destroyed
的钩子。
在大多数场景中你不应该调用这个方法。最好使用 v-if
和 v-for
,以数据驱动的方式控制子组件的生命周期。