<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- 1. 导入Vue的包 -->
<script src="lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<p>{{msg}}</p>
</div>
<script>
var vm = new Vue({
el: '#app', // 表示,当前我们new的这个Vue实例,要控制页面上的哪个区域
data: { // data属性,存放的是el中要用到的数据
msg: '欢迎学习vue'
}
});
</script>
</body>
</html>
1.部分指令
插值表达式: 数据绑定最常见形式就是使用 {{…}}
v-html: 用于输出html代码
v-cloak: 能够解决插值表达式闪烁问题
v-text: 会覆盖元素中原本的内容,但是插值表达式只会替换增加的这个占位符
v-bind: 用于绑定属性的指令 v-bind会将后面的内容当做js表达式去解析执行,可以写合法的js表达式
简写为 :要绑定的属性
2.事件修饰符:
.stop 阻止冒泡
.prevent 阻止默认事件
.capture 添加事件侦听器时使用事件捕获模式
.self 只当事件在该元素本身(比如不是子元素)触发时触发回调
.once 事件只触发一次
3.双向绑定
4.在Vue中使用样式
使用class样式
这是一个邪恶的H1
这是一个邪恶的H1
这是一个邪恶的H1
这是一个邪恶的H1
使用内联样式
- 直接在元素上通过 :style 的形式,书写样式对象
这是一个善良的H1
将样式对象,定义到 data 中,并直接引用到 :style 中
在data上定义样式:
data: {
}h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' }
在元素中,通过属性绑定的形式,将样式对象应用到元素中:这是一个善良的H1
2.在 :style 中通过数组,引用多个 data 上的样式对象
在data上定义样式:
data: {
}h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' },
h1StyleObj2: { fontStyle: 'italic' }
在元素中,通过属性绑定的形式,将样式对象应用到元素中:这是一个善良的H1
5.v-for和key属性
迭代数组
<ul>
<li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name}} --- 年龄:{{item.age}}</li>
</ul>
迭代对象中的属性
<!-- 循环遍历对象身上的属性 -->
<div v-for="(val, key, i) in userInfo">{{val}} --- {{key}} --- {{i}}</div>
迭代数字
在组件中,使用v-for循环的时候,或者在一些特殊情况中,如果v-for有问题,必须在使用v-for的同时,指定唯一的string/nameber类型的key值<p v-for="i in 10">这是第 {{i}} 个P标签</p>
2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的。
当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。6.v-if和v-show
v-if 每次都会重新删除或创建元素
v-show 不会进行Dom的删除和创建,只是切换元素的display:none样式
v-if有较高的切换性能消耗
v-show有较高的初始渲染消耗
如果元素涉及到频繁的切换,最好不要使用v-if,而是推荐使用v-show
如果元素可能永远也不会被显示出来被用户看到,则推荐使用v-if