目录
一、第一章 Vue核心
1.1. Vue简介
1.1.1. 官网
1.1.2. 介绍与描述
1.1.3. Vue 的特点
1.1.4. 与其它 JS 框架的关联
1.1.5. Vue 周边库
1.2.初识Vue
1.3. 模板语法
1.4. 数据绑定
1.5 el与data的两种写法
1.6 MVVM模型
1.7 Vue中的数据代理
1.8.事件处理
1.8.1事件的基本使用
1.8.2事件修饰符
1.8.3 键盘事件
1.9.计算属性
1.10.监视属性
1.10.1监视属性基本用法
1.10.2深度监视
1.10.3监视简写
1.10.4监视属性和计算属性
1.11 绑定样式
1.12. 条件渲染
1.13.列表渲染
1.13.1 基本列表
1.13.2. key的作用与原理
1.13.3. 列表过滤
1.13.4. 列表排序
1.13.5. Vue数据监视
1.14 收集表单数据
1.15.过滤器
1.16. 内置指令
1.16.1. v-text指令
1.16.2. v-html指令
1.16.3. v-cloak指令
1.16.4. v-once指令
1.16.5. v-pre指令
1.17. 自定义指令
1.18. Vue生命周期
1.18.1引出生命周期
1.18.2. 分析生命周期
1.18.3. 总结生命周期
Document
hello,{{name}},{{address}}
{{Date.now()}}
注意:
1.想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象;
2.root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法;
3.root容器里的代码被称为【Vue模板】;
4.Vue实例和容器是一一对应的;
5.真实开发中只有一个Vue实例,并且会配合着组件一起使用;
6.{{xxx}}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性;
7.一旦data中的数据发生改变,那么页面中用到该数据的地方也会自动更新;
注意区分:js表达式 和 js代码(语句)
1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方:
(1). a
(2). a+b
(3). demo(1)
(4). x === y ? ‘a’ : ‘b’
2.js代码(语句)
(1). if(){}
(2). for(){}
Document
结果:
总结:
Vue模板语法有2大类:
1.插值语法:
功能:用于解析标签体内容。
写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。
2.指令语法:
功能:用于解析标签(包括:标签属性、标签体内容、绑定事件.....)。
举例:v-bind:href="xxx" 或 简写为 :href="xxx",xxx同样要写js表达式,且可以直接读取到data中的所有属性。
数据绑定 单向数据绑定:
双向数据绑定:
总结:
Vue中有2种数据绑定的方式:
注意:双向绑定一般都应用在表单类元素上(如:、
你好,{{name}}
总结:
1.el有2种写法
(1).new Vue时候配置el属性。
(2).先创建Vue实例,随后再通过vm.$mount('#root')指定el的值。
2.data有2种写法
(1).对象式
(2).函数式
如何选择:目前哪种写法都可以,以后学习到组件时,data必须使用函数式,否则会报错。
3.一个重要的原则: 由Vue管理的函数,一定不要写箭头函数,一旦写了箭头函数,this就不再是Vue实例了。
理解MVVM 学校名称:{{name}}
学校地址:{{address}}
测试一下1:{{1+1}}
测试一下2:{{$options}}
测试一下3:{{$emit}}
测试一下4:{{_c}}
1.Vue中的数据代理: 通过vm对象来代理data对象中属性的操作(读/写)
2.Vue中数据代理的好处:更加方便的操作data中的数据
3.基本原理:
事件的基本使用 >欢迎来到{{name}}学习
效果:
总结:
事件修饰符
修饰符小技巧:修饰符可以连续写,比如可以这么用:
@click.prevent.stop="showInfo"
键盘事件
欢迎来到{{name}}学习
1.Vue中常用的按键别名:
2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)
3.系统修饰键(用法特殊):ctrl、alt、shift、meta
(1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。
(2).配合keydown使用:正常触发事件。
4.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
(1)插值语法
姓:
名:
全名:{{firstName}}-{{lastName}}
(2)methods实现
姓:
名:
全名:{{fullName()}}
(3)计算属性
姓:
名:
测试:
全名:{{fullName}}
{fullName}}
全名:{{fullName}}
全名:{{fullName}} -->
效果:
总结:
优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便
简写(只读取不改):
天气案例_监视属性
今天天气很{{info}}
总结:
监视属性watch:
vm.$watch
监视vm.$watch('isHot',{immediate:true, //初始化时让handler调用一下//handler什么时候调用?当isHot发生改变时。handler(newValue,oldValue){console.log('isHot被修改了',newValue,oldValue)}
})
天气案例_深度监视
a的值是:{{numbers.a}}
b的值是:{{numbers.b}}
总结:
1.深度监视:
2.备注:
如果监视属性除了handler没有其他配置项的话,可以进行简写。
(1)使用计算属性:
new Vue({el:'#root', data:{ firstName:'张',lastName:'三'},computed:{fullName(){return this.firstName + '-' + this.lastName}}
})
(2)使用监听属性:
new Vue({el:'#root',data:{firstName:'张',lastName:'三',fullName:'张-三'},watch:{firstName(val){setTimeout(()=>{this.fullName = val + '-' + this.lastName},1000);},lastName(val){this.fullName = this.firstName + '-' + val}}
})
总结:
绑定样式
{{name}}
{{name}}
{{name}}
{{name}}
{{name}}
效果:
总结:
条件渲染
当前的n值是:{{n}}
{name}} -->{name}} -->{name}} -->{name}} -->你好
ddd
北京
总结:
基本列表 人员列表(遍历数组)
- {{p.name}}-{{p.age}}
汽车信息(遍历对象)
- {{k}}-{{value}}
测试遍历字符串(用得少)
- {{char}}-{{index}}
测试遍历指定次数(用得少)
- {{index}}-{{number}}
总结:
v-for
指令:
,其中key可以是index,也可以是遍历对象的唯一标识
key的原理
人员列表(遍历数组)
- {{p.name}}-{{p.age}}
{p.name}}-{{p.age}} -->
效果:
上图一为:key=index,图二为:key=p.id
原理:
注意:
面试题:react、vue中的key有什么作用?(key的内部原理)
列表过滤 人员列表
- {{p.name}}-{{p.age}}-{{p.sex}}
效果:
列表排序 人员列表
- {{p.name}}-{{p.age}}-{{p.sex}}
总结数据监视
学生信息
姓名:{{student.name}}
年龄:{{student.age}}
性别:{{student.sex}}
爱好:
- {{h}}
朋友们:
- {{f.name}}--{{f.age}}
总结:
Vue监视数据的原理:
特别注意:Vue.set() 和 vm.$set() 不能给vm 或 vm的根数据对象(data等) 添加属性
收集表单数据
效果:
总结:
收集表单数据:
v-model的三个修饰符:
过滤器 显示格式化后的时间
现在是:{{fmtTime}}
现在是:{{getFmtTime()}}
现在是:{{time | timeFormater}}
现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}
尚硅谷
{{msg | mySlice}}
效果:
总结:
过滤器:
v-text指令 你好,{{name}}
总结:
v-text指令:
1.作用:向其所在的节点中渲染文本内容。
2.与插值语法的区别:v-text会替换掉节点中的内容,{{xx}}则不会。
v-html指令 Hello,{{name}}
效果:
总结:
v-html指令:
v-cloak指令 {{name}}
总结:
v-cloak
指令(没有值):
v-cloak
属性v-cloak
可以解决网速慢时页面展示出{{xxx}}
的问题
v-once指令 初始化的n值是:{{n}}
当前的n值是:{{n}}
总结:
v-once
指令:
v-once
所在节点在初次动态渲染后,就视为静态内容了
以后数据的改变不会引起v-once
所在结构的更新,可以用于优化性能
v-pre指令 Vue其实很简单
当前的n值是:{{n}}
总结:
v-pre
指令:
自定义指令 当前的n值是:
放大10倍后的n值是:
总结:
new Vue({ directives:{指令名:配置对象} })
new Vue({ directives:{指令名:回调函数} })
Vue.directive(指令名,配置对象)
Vue.directive(指令名,回调函数)
Vue.directive('fbind',{//指令与元素成功绑定时(一上来)bind(element,binding){element.value = binding.value},//指令所在元素被插入页面时inserted(element,binding){element.focus()},//指令所在的模板被重新解析时update(element,binding){element.value = binding.value}
})
2. 配置对象中常用的3个回调函数:
bind(element,binding)
:指令与元素成功绑定时调用inserted(element,binding)
:指令所在元素被插入页面时调用update(element,binding)
:指令所在模板结构被重新解析时调用3.备注:
指令定义时不加“v-”,但使用时要加“v-”
指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名
引出生命周期 你好啊
欢迎学习Vue
总结:
生命周期:
分析生命周期 当前的n值是:{{n}}
结果:
引出生命周期 欢迎学习Vue
总结:
常用的生命周期钩子:
关于销毁Vue实例: