[TOC]
(一) hello world
- el 实例挂载元素节点
- data 可以在模板上展示的数据
- {{}} 插值表达式, 用来展示data里的数据
- v-text和v-html指令可以展示文本和标签
```javascript
// demo1.html
<!DOCTYPE html>
{{msg}}
<script>
new Vue({
// vue实例挂载的节点
el: '#app',
data: {
msg: 'hello world',
str: '<button>这是个按钮</button>'
}
});
</script>
<a name="79I46"></a>
## (二) 双向绑定
使用v-model指令对数据进行双向数据绑定<br />**指令:** 我们给计算机的命令
1. 修改了data里的username的值, 页面的username会跟着变化
1. 在页面上修改username的值, data里的username也会跟着变化
```javascript
// demo2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hello world</title>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" placeholder="请输入用户名" v-model="username">
</div>
<script>
var obj = new Vue({
el: '#app',
data: {
username: '张无忌'
}
})
</script>
</body>
</html>
(三) 修改css样式
绑定样式:
- v-bind:calss
- 简写 :class ```javascript // demo3.1.html <!DOCTYPE html>
- xxxx
- xxxx
- xxxx
// demo3.2.html 使用三目运算符添加类 <!DOCTYPE html>
ppppppppppppppppppp
<a name="j0yCj"></a>
## (四) 修改样式
javascript
// demo4.html
<!DOCTYPE html>
ppppppppppp
<a name="qSSa5"></a>
## (五) 绑定事件
1. 绑定事件(不传参)
1. v-on:事件类型
1. 简写: @事件类型
```javascript
// demo5.1.html
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
<div id="app">
<button v-on:click="say">点我</button>
<!-- 简写@ -->
<button @click="say()">点我</button>
</div>
<script>
new Vue({
el: '#app',
data: {},
// 方法必须写在methods
methods: {
say() {
alert(2222);
}
}
});
</script>
- 绑定事件(传参) ```javascript
created ----》实例创建之后
beforeMount ----》实例挂载之前
mounted ----》实例挂载之后
beforeUpdate ----》实例更新之前
updeted ----》实例更新之后
beforeDestroy ----》实例销毁之前
destroyed ----》实例销毁之后 ```javascript
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
- xxxxx
<a name="VWbEc"></a>
## (八) 渲染列表
1. v-for指令渲染列表
1. :key="index" 添加key可以优化渲染效率(速度)
javascript
// demo8
<!DOCTYPE html>
- {{item.name}}
<a name="4iNXV"></a>
## (九) couputed 计算属性
根据一个已知的属性得到一个新的属性
```javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="str"> => <span>{{capital}}</span>
</div>
<script>
var obj = new Vue({
el: '#app',
data: {
str: ''
},
// 计算属性
computed: {
// 新的属性
capital() {
return this.str.toUpperCase();
}
}
})
</script>
</body>
</html>
(十) watch 侦听器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
</head>
<body>
<div id="app">
<p>{{username}}</p>
<button @click="username='张欢'">修改名字</button>
</div>
<script>
var obj = new Vue({
el: '#app',
data: {
username: '张三丰'
},
watch: {
// 监听username的变化
username(newVal, oldVal) {
console.log('新值', newVal);
console.log('旧值', oldVal);
}
}
})
</script>
</body>
</html>
// 总结:同一个功能 computed 和 watch 都能实现,能用 computed 的时候一般都用 computed,更简洁
(十一) refs 获取原生dom节点或者子组件实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
</head>
<body>
<div id="app">
<div ref="aa">divdivdivdivdivdivdivdiv</div>
<p ref="bb">pppppppppppppppppppppppppp</p>
</div>
<script>
var obj = new Vue({
el: '#app',
data: {},
created() {
console.log(this.$refs);
},
mounted() {
console.log(this.$refs);
console.log(this.$refs['aa']);
console.log(this.$refs['bb']);
}
})
</script>
</body>
</html>
使用axios请求数据
axios.get(url).then(res=> {
if (res.code == 666) {
console.log(res);
} else {
console.log(res.msg);
}
}).catch(err=> {
console.log(err);
})
作业1: 使用vue完成首页和影院列表页
附加作业: 使用vue重构英雄小项目