持续更新思维导图:
最近开始复习vue,在某b站看到一个不错视频,跟着撸一遍。
链接:001_尚硅谷Vue技术_课程简介_哔哩哔哩_bilibili
以下是学习记录笔记和相关代码:
代码仓库链接:https://github.com/xiaoli0510/vue
- 初识Vue:
- 1.想让Vue工作,必须创建一个Vue实例,且要传入一个配置对象;
- 2.root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法;
- 3.root容器里的代码被称为【Vue模板】;
- 4.Vue实例和容器是一一对应的;
- 5.真实开发中只有一个Vue实例,并且会配合着组件一起使用;
- 6.{{xx}}中的xx要写js表达式,且xx可以自动读取到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(){}
-
- 模板语法:
- Vue模板语法有2大类:
- 1.插值语法:
- 功能:用于解析标签体内容;
- 写法:{{xx}},xx是js表达式,且可以直接读取到data中的所有属性;
- 2.指令语法:
- 功能:用于解析标签(包括:标签属性、标签体内容、绑定事件...);
- 举例:v-bind:href="xx"可简写成:href="xx",xx是js表达式,且可以直接读取到data中的所有属性;
20221124:P8-P9:
- Vue中有2种数据绑定的方式:
- 1.单向绑定(v-bind):数据只能从data流向页面。
- 2.双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data。
- 备注:
- 1.双向绑定一般都应用在表单类元素上(如input、select等)。
- 2.v-model:value可以简写为v-model,因为v-model默认收集的就是value值。
-
- el与data的两种写法
- 1.el有2种写法
- (1).new Vue时配置el属性。
- (2).先创建Vue实例,随后再通过vm.$mount('#root')制定el的值。
- 2.data有2种写法
- (1)对象式。
- (2)函数式。
- 目前用两种都可以,后续使用组件时,需使用函数式,否则会报错
- 3.一个重要的原则
- 由Vue管理的函数,一定不要写箭头函数,一旦写了箭头函数,this就不再指向Vue实例。
20230504:P10:
- MVVM模型:
- 1.M:模型(Model):data中的数据;
- 2.V:视图(View):模板代码;
- 3.MV:视图模型(ViewModel):Vue实例;
-
- vue中的MVVM特点:
- 1.data中的所有属性,最后都出现在vm身上;
- 2.vm身上所有的属性,及Vue原型上所有属性,在Vue模板中都可以直接使用;
20230504:P11-P13:
- Object.defineProperty:
- 1.value:设置值;
- 2.enumerable:控制属性是否可枚举,默认是false;
- 3.writable:控制属性是否可改,默认是false;
- 4.configurable:控制属性是否可删除,默认是false;
- 5.get:getter:当读取xx属性时,会触发;
- 6.set:getter:当修改xx属性时,会触发;
-
- 数据代理:通过一个对象代理对另外一个对象中属性的读写操作
-
- 数据代理
- 1.Vue中的数据代理:
- 通过vm对象来代理data对象中所有属性的读写操作;
- 2.优点:
- 方便操作data中的数据;
- 3.基本原理:
- 通过Object.defineProperty将data中的属性添加到vm上;
- 为每个添加到vm上的属性,都指定一个getter/setter;
- 在getter/setter内部去操作data中对应的属性;
20230504:P14-P16:
- 事件的基本使用:
- 1.使用v-on:xxx或者@xxx绑定事件,xxx是事件名字;
- 2.事件的回调需配置在methods对象中,最终会在vm上;
- 3.methods中配置的函数,不要用箭头函数,否则this指向window;
- 4.methods中配置的函数,都是Vue所管理的函数,this的指向是vm或组件实例对象;
- 5.@click="demo"和@click="demo(event)"效果一致,但后者可传参;
-
- 事件修饰符:
- 1.prevent:阻止默认事件
- 2.stop:阻止事件冒泡
- 3.once:事件只触发一次
- 4.capture:使用事件的捕获模式;
- 5.self:只有event.target是当前操作的元素时才触发;
- 6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕;在wheel事件中使用,或者移动端使用。
-
- 键盘事件
- 1.Vue中常用的按钮别名:
- 回车:enter;
- 删除:delete;
- 退出:esc
- 空格:space
- 换行:tab
- 上:up
- 下:down
- 左:left
- 右:right
- 2.Vue未提供别名的按键,可使用按键原始值去绑定,需使用caps-lock命名;
- 3.系统修饰符(用法特殊):ctrl、alt、shift、meta;
- a.配合keyup使用:按下修饰符的同时,再按下其它键,随后释放其它键,事件才被触发。
- b.配合keydown使用:正常触发事件。
- 4.使用keyCode去指定具体的按键(不推荐);
- 5.Vue.config.keyCodes自定义键名=键码,自定义按键别名;
20230505:P21-P24:
- 计算属性:
- 1.定义:要用的属性不存在,需要通过已有属性计算得来;
- 2.原理:Object.defineProperty提供的getter/setter;
- 3.get函数什么时候执行:
- a:初次读取时会执行一次;
- b:当依赖的数据发生改变时会再次执行;
- 4.优点:内部有缓存机制,能复用,效率更高,调试方便;
- 5.备注:
- a:计算属性最终会出现在vm上,直接读取使用即可,不用在后面添加();
- b:如果计算属性要被修改,需要写set函数,且set中要修改计算时所依赖的属性;
-
-
- 计算属性两种写法:
- 1.配置对象,get和set函数;
- 2.不需setter函数时,简写成函数;
20230505:P18-P25:
- 监视属性:可监视data里面或者computed里面的属性;
-
- 监视属性两种写法:
- 1.watch方法;
- 2.vm.$watch方法;
-
- 监视属性简写:
- 1.不需配置immediate和deep属性时,可简写;
- 2.回调函数不要用箭头函数,箭头函数里面的this指向window;
-
- watch和computed区别:
- 1.computed能完成的功能,watch都可以完成;
- 2.watch能完成的功能,computed不一定能完成。因为watch里面能处理异步,computed里面不能处理异步;
-
- 两个重要的小原则:
- 1.Vue管理的函数,不要写箭头函数,这样this指向vm或组件实例对象;
- 2.不被Vue管理的函数(定时器的回调函数、ajax的回调函数、Promise的回调函数),最好写箭头函数,这样this指向vm或组件实例对象;
20230531:P26:
- 绑定样式的三种方式:
- 1.字符串写法,适用于:样式的类名不确定,需要动态指定
- 2.数组写法,适用于:要绑定的样式个数不确定、名字也不确定
- 3.对象写法,适用于:要绑定的样式个数不确定、名字也不确定,且需要动态指定