Vue学习笔记

课程来源:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=4&vd_source=6f37192b213c98639a87ec77b26d105d

学习计划:一天学10节,从第四节开始做笔记,预计16天完成(完成日期2022年12月7日)

目录:

目录

2022年11月20日:

一、搭建Vue开发环境

二、Hello World小案例

三、分析Hello案例

四、模板语法

五、数据绑定

六、el与data的两种写法

七、理解MVVM

 2022年11月21日:

一、Object.defineProperty方法

二、理解数据代理

三、Vue中的数据代理 

四、Vue的事件处理 

五、事件修饰符

六、键盘事件

​编辑

七、事件总结

八、姓名案例 (计算属性与监视)

九、计算属性

十、计算属性简写

2022年11月22日: 

一、天气案例

二、监视属性

三、深度监视 

四、监视的简写形式

五、watch和computed对比

六、绑定class样式 

七、绑定style样式 

 八、条件渲染

 九、列表渲染

十、key的作用和原理 


2022年11月20日:

一、搭建Vue开发环境

新手使用vue的时候建议用标签引入

Vue学习笔记_第1张图片

学习的时候用开发版本

首先新建一个文件夹,在文件夹上右键选择用vscode打开

Vue学习笔记_第2张图片

如果右键没有这个选项,怎么设置?

可以参考这篇文章:https://blog.csdn.net/weixin_52624519/article/details/126224255

 简要说一下:

win+R然后输入regedit

Vue学习笔记_第3张图片

Vue学习笔记_第4张图片

Vue学习笔记_第5张图片

Vue学习笔记_第6张图片

 Vue学习笔记_第7张图片

Vue学习笔记_第8张图片

到此设置完毕! 

在文件夹下新建两个文件夹:初识vue和js(其中js中用来存放vue文件) 

Vue学习笔记_第9张图片

然后可以直接右键在浏览器中查看

Vue学习笔记_第10张图片

Vue学习笔记_第11张图片 页面上是没有任何内容的,但是console下会有两个小提示:

第一个提示:下载vue的开发者工具达到更好的体验,也就是说在浏览器中安装官方推荐的vue开发者工具

第二个提示:你正在运行一个开发者版本的vue,在生产环境中还是需要用生产版本的vue

第一个提示的解决方案:

Vue学习笔记_第12张图片然后就会进入到github上:

Vue学习笔记_第13张图片 点击Get the Chrome Extension,适用于vue2.0并且是对应谷歌浏览器的

后面的beta channel是vue3.0才用到的

如果在国外可以直接在chrome网上应用商店去添加

Vue学习笔记_第14张图片

 如果有已经下载好的文件中的crx后缀的文件直接拖到这个扩展程序里面来

Vue学习笔记_第15张图片

Vue学习笔记_第16张图片

Vue学习笔记_第17张图片

然后就会发现第一个提示已经不在了

Vue学习笔记_第18张图片 

上面的这个vue的标志只所以不亮是还没有用到vue

第一个提示已经解决了,但是第二个提示还是一直存在,如何解决?

Vue学习笔记_第19张图片 Vue学习笔记_第20张图片

vue.config里的就是vue的全局配置,一次修改到处都可以用

Vue学习笔记_第21张图片 回到vue的api文档中:找到productionTip

Vue学习笔记_第22张图片

Vue学习笔记_第23张图片

 Vue学习笔记_第24张图片

设置完之后再刷新就会发现这两个提示没有了(但是经过实测,发现是行不通的,以下是解决方案)

Vue学习笔记_第25张图片

二、Hello World小案例

Vue学习笔记_第26张图片 Vue学习笔记_第27张图片

 Vue学习笔记_第28张图片

Vue学习笔记_第29张图片 所以解决方案就是直接在目录下给一个图标即可

Vue学习笔记_第30张图片

Vue学习笔记_第31张图片

 使用vue的时候,需要先创建vue

Vue学习笔记_第32张图片

Vue学习笔记_第33张图片

 ​​​​​​Vue学习笔记_第34张图片

Vue学习笔记_第35张图片 上图中的配置对象指的是el,data。

三、分析Hello案例

如果有两个容器

Vue学习笔记_第36张图片

Vue学习笔记_第37张图片

所以一个vue实例不能同时接管两个容器 (多个容器对应一个实例,不可取)

如果是一个容器对应多个实例呢?

Vue学习笔记_第38张图片

Vue学习笔记_第39张图片 所以一个容器只能被一个vue实例所接管,所以容器和vue实例只能是一一对应的关系

如果真想两个容器,就得需要两个不同的容器:root和root2

Vue学习笔记_第40张图片

 {{}}里面的必须是js表达式

Vue学习笔记_第41张图片

 Vue学习笔记_第42张图片

Vue学习笔记_第43张图片 Vue学习笔记_第44张图片

Vue学习笔记_第45张图片 

 Vue学习笔记_第46张图片

引入开发版本的vue和生产版本的vue的区别:

开发版本的:

实例化vue需要用到new关键字,如果不小心去掉了这个new关键字,如果引用的是开发版本的vue就会报错:

Vue学习笔记_第47张图片 生产版本:就直接会报底层错误,不会有第一行那个友好的提示:

Vue学习笔记_第48张图片

四、模板语法

Vue学习笔记_第49张图片 Vue学习笔记_第50张图片

Vue学习笔记_第51张图片

 写了v-bind其实url就是当做表达式去读取的

 Vue学习笔记_第52张图片

 所以就会报错:

Vue学习笔记_第53张图片

 Vue学习笔记_第54张图片

Vue学习笔记_第55张图片

v-bind:可以直接简写为:

那什么时候用插值语法什么时候用指令语法:

Vue学习笔记_第56张图片

 Vue学习笔记_第57张图片

 Vue学习笔记_第58张图片

Vue学习笔记_第59张图片

如果想有两个name该咋实现:
Vue学习笔记_第60张图片

五、数据绑定

Vue学习笔记_第61张图片 v-bind是单向绑定 

 v-model是双向绑定

那可以不写v-bind只写v-model吗?(不可以)

Vue学习笔记_第62张图片

Vue学习笔记_第63张图片Vue学习笔记_第64张图片 Vue学习笔记_第65张图片

Vue学习笔记_第66张图片 Vue学习笔记_第67张图片

Vue学习笔记_第68张图片

六、el与data的两种写法

Vue学习笔记_第69张图片

如果每次写都要这么写就比较麻烦,所以可以直接用代码片段:v1

Vue学习笔记_第70张图片

该怎么设置呢?

Vue学习笔记_第71张图片

el的两种写法:

Vue学习笔记_第72张图片Vue学习笔记_第73张图片

Vue学习笔记_第74张图片 Vue学习笔记_第75张图片

 data的两种写法:

Vue学习笔记_第76张图片

 Vue学习笔记_第77张图片

Vue学习笔记_第78张图片

 前提是data必须是普通函数,如果是箭头函数:

Vue学习笔记_第79张图片

 this就是全局的window,因为箭头函数没有自己的vue,所以往外找,就找到了全局的window

Vue学习笔记_第80张图片

七、理解MVVM

Vue学习笔记_第81张图片 Vue学习笔记_第82张图片

Vue学习笔记_第83张图片

 

Vue学习笔记_第84张图片

Vue学习笔记_第85张图片

Vue学习笔记_第86张图片 ​​​​​​Vue学习笔记_第87张图片

 2022年11月21日:

一、Object.defineProperty方法

define是定义的意思,property是属性的意思

给一个对象定义属性使用

(ES6中学过)

defineProperty方法的第一个参数表示需要给哪个对象添加属性,第二个参数添加的属性叫什么名,第三个配置项,配置项里可以写很多的配置,比较常用的如:value

Vue学习笔记_第88张图片

Vue学习笔记_第89张图片 age之所以颜色淡一点,表示这个age不能被枚举,表示age属性不参与遍历

验证一下:

Vue学习笔记_第90张图片

Object.Key这个方法传入一个对象 ,可以把对象的属性提取出来变成一个数组,上图中age是直接写的,所以可以拿到age这个属性

下图是通过Object.defineProperty方法定义的属性,是不能够被遍历的,但是可以通过另一个配置项来实现遍历

Vue学习笔记_第91张图片 

 也可以用for循环:

Vue学习笔记_第92张图片

 Vue学习笔记_第93张图片

 

Vue学习笔记_第94张图片

Vue学习笔记_第95张图片

Vue学习笔记_第96张图片 如果是直接给对象一个age属性并赋值,这个值是可以改变的

Vue学习笔记_第97张图片

 如果是通过defineProperty方法定义属性:

Vue学习笔记_第98张图片

Vue学习笔记_第99张图片 如果想要修改该如何设置呢?设置writable为true即可

Vue学习笔记_第100张图片

同样的对象的属性是否可以删除:

直接给对象一个name属性,是可以删掉的

Vue学习笔记_第101张图片

 如果是通过Object.defineProperty方法定义的属性:是删不掉的

Vue学习笔记_第102张图片

 那如何才能删掉呢?

Vue学习笔记_第103张图片

以上4个都是比较基本的配置项,高级一点的配置项 :

Vue学习笔记_第104张图片

Vue学习笔记_第105张图片

Vue学习笔记_第106张图片

Vue学习笔记_第107张图片

getter和setter比较重要

二、理解数据代理

Vue学习笔记_第108张图片

Vue学习笔记_第109张图片

三、Vue中的数据代理 

Vue学习笔记_第110张图片

控制台输入vm

Vue学习笔记_第111张图片

Vue学习笔记_第112张图片

 Vue学习笔记_第113张图片

Vue学习笔记_第114张图片 

 Vue学习笔记_第115张图片

所以该怎么验证vm._data=data?

Vue学习笔记_第116张图片Vue学习笔记_第117张图片

 退回之前的效果:

Vue学习笔记_第118张图片

Vue学习笔记_第119张图片 Vue学习笔记_第120张图片

Vue学习笔记_第121张图片 Vue学习笔记_第122张图片

没有数据代理的话:这样的话就比较麻烦

Vue学习笔记_第123张图片 如果有数据代理:

Vue学习笔记_第124张图片

 Vue学习笔记_第125张图片

四、Vue的事件处理 

Vue学习笔记_第126张图片

Vue学习笔记_第127张图片

 第一个参数默认就是event(事件对象)

Vue学习笔记_第128张图片

 事件的事件目标也就是上面的按钮:

Vue学习笔记_第129张图片

Vue学习笔记_第130张图片 innerText可以拿到按钮里面的文字

Vue学习笔记_第131张图片

 this就拿到了vm

Vue学习笔记_第132张图片

怎么验证呢?

Vue学习笔记_第133张图片 打印的结果为true

Vue学习笔记_第134张图片 

Vue学习笔记_第135张图片

Vue学习笔记_第136张图片 Vue学习笔记_第137张图片

Vue学习笔记_第138张图片

五、事件修饰符

Vue学习笔记_第139张图片

Vue学习笔记_第140张图片 Vue学习笔记_第141张图片

Vue学习笔记_第142张图片 Vue学习笔记_第143张图片

效果就是当点击button按钮的时候,会提示信息两次,这时就可以使用stopPropagation修饰符

Vue学习笔记_第144张图片 或者可以直接在click后面.stop

Vue学习笔记_第145张图片

 .once就是事件只触发一次,点第一次可以触发clikc事件,第二次就不可以了

Vue学习笔记_第146张图片 Vue学习笔记_第147张图片

Vue学习笔记_第148张图片 Vue学习笔记_第149张图片

为什么是2、1呢,因为点div2的时候先经过的是事件捕获,随后才是事件冒泡,事件冒泡才是处理事件的

Vue学习笔记_第150张图片 现在想要它在捕获阶段直接处理事件:

Vue学习笔记_第151张图片

Vue学习笔记_第152张图片 Vue学习笔记_第153张图片

Vue学习笔记_第154张图片如果加上了.self:

Vue学习笔记_第155张图片 Vue学习笔记_第156张图片

Vue学习笔记_第157张图片 

Vue学习笔记_第158张图片 scroll是滚动条发生滚动触发事件

Vue学习笔记_第159张图片

 wheel是鼠标滚动轮的滚动

两者的区别就是当是滚动条的时候,滚到最底端的时候就不会再触发了,当是滚动条的时候,滚到最底端的时候还会一直触发

现在用滚轮事件:

Vue学习笔记_第160张图片

 Vue学习笔记_第161张图片

 所以可以加.passive

Vue学习笔记_第162张图片

 scroll就不会存在这个问题,会先响应滚动。所以scroll就不需要用passive

六、键盘事件

Vue学习笔记_第163张图片

Vue学习笔记_第164张图片 Vue学习笔记_第165张图片

Vue学习笔记_第166张图片

Vue学习笔记_第167张图片Vue学习笔记_第168张图片

Vue学习笔记_第169张图片

Vue学习笔记_第170张图片

Vue学习笔记_第171张图片

Vue学习笔记_第172张图片希望输入完之后按一下ctrl键,然后控制台打印相应的东西,这里没有打印出来,不仅是ctrl,还有:(上面有使用的方式)

 meta键其实就是键盘上的win键

Vue学习笔记_第173张图片

七、事件总结

Vue学习笔记_第174张图片

Vue学习笔记_第175张图片

八、姓名案例 (计算属性与监视)

Vue学习笔记_第176张图片

Vue学习笔记_第177张图片 用三种方式实现这个案例:第一个是{{}}、第二个是methods,第三个是计算属性

Vue学习笔记_第178张图片

 Vue学习笔记_第179张图片

 Vue学习笔记_第180张图片

Vue学习笔记_第181张图片

Vue学习笔记_第182张图片 如果以上那种写法,后面firstName还有其他条件就会一直写下去,这样不友好

Vue学习笔记_第183张图片

用方法实现:

Vue学习笔记_第184张图片 Vue学习笔记_第185张图片

效率不高

九、计算属性

Vue学习笔记_第186张图片

 Vue学习笔记_第187张图片

 Vue学习笔记_第188张图片

Vue学习笔记_第189张图片 Vue学习笔记_第190张图片

Vue学习笔记_第191张图片 

十、计算属性简写

注意:只考虑读取不考虑修改的时候才可以用以下简写方式:

Vue学习笔记_第192张图片

Vue学习笔记_第193张图片

2022年11月22日: 

一、天气案例

Vue学习笔记_第194张图片

比较好用的插件:

Vue学习笔记_第195张图片 这个插件就是当你写代码的时候会有很多提示

Vue学习笔记_第196张图片

Vue学习笔记_第197张图片 Vue学习笔记_第198张图片

Vue学习笔记_第199张图片Vue学习笔记_第200张图片

 Vue学习笔记_第201张图片

这仅仅是个插件存在的不足之处,或许将来的某一天会得到改变!

Vue学习笔记_第202张图片 Vue学习笔记_第203张图片

不推荐直接在@click后面写语句

比如说点击按钮实现弹窗:

Vue学习笔记_第204张图片

按照上面的写法肯定报错,因为vue的实例找不到alert这个方法 

Vue学习笔记_第205张图片

 假设改成window.alert()

Vue学习笔记_第206张图片

还是会报错,因为在vue上面找不到window

Vue学习笔记_第207张图片

解决方案:把window给到vue实例
Vue学习笔记_第208张图片

Vue学习笔记_第209张图片

二、监视属性

 顾名思义就是监视某一个属性的变化

vue当中要实现监视,需要用watch

Vue学习笔记_第210张图片

 Vue学习笔记_第211张图片Vue学习笔记_第212张图片

handler默认是一上来先不执行,当点击按钮时,发生了改变才执行

Vue学习笔记_第213张图片 看下能不能监视计算出来的属性:

Vue学习笔记_第214张图片

Vue学习笔记_第215张图片 除此之外还可以这么写:

Vue学习笔记_第216张图片

Vue学习笔记_第217张图片

三、深度监视 

 Vue学习笔记_第218张图片

 需求:监视a的变化

Vue学习笔记_第219张图片

Vue学习笔记_第220张图片 正确写法:

Vue学习笔记_第221张图片

需求:监视numbers中的任意一个的变化

点击按钮“测地替换掉numbers”,然后就相当于给number赋值,所以numbers就改变了

Vue学习笔记_第222张图片

Vue学习笔记_第223张图片

Vue学习笔记_第224张图片

 但是这样只能监视到numbers,还是监视不到numbers中的a和b

Vue学习笔记_第225张图片

Vue学习笔记_第226张图片

四、监视的简写形式

 当配置项里只有handler的时候可以简写

Vue学习笔记_第227张图片

Vue学习笔记_第228张图片 Vue学习笔记_第229张图片

Vue学习笔记_第230张图片 所有vue管理的函数都要写成普通函数,不要写成箭头函数

五、watch和computed对比

Vue学习笔记_第231张图片

Vue学习笔记_第232张图片 Vue学习笔记_第233张图片

现在的需求就是, 改了名或者姓等1秒再显示全名

监听:

Vue学习笔记_第234张图片

 计算属性
Vue学习笔记_第235张图片

Vue学习笔记_第236张图片

六、绑定class样式 

Vue学习笔记_第237张图片

 Vue学习笔记_第238张图片

 Vue学习笔记_第239张图片

Vue学习笔记_第240张图片 Vue学习笔记_第241张图片

Vue学习笔记_第242张图片 使用vue:

正常的样式正常写,需要动态变化的就:class进行绑定

Vue学习笔记_第243张图片

 Vue学习笔记_第244张图片

Vue学习笔记_第245张图片

Vue学习笔记_第246张图片

 需求:点击div随机生成样式

Vue学习笔记_第247张图片

Math.random()范围是[0,1)

乘以3就是[0,3)

Math.floor是向下取整

Vue学习笔记_第248张图片 Vue学习笔记_第249张图片

Vue学习笔记_第250张图片 Vue学习笔记_第251张图片

Vue学习笔记_第252张图片

Vue学习笔记_第253张图片 Vue学习笔记_第254张图片

 Vue学习笔记_第255张图片

Vue学习笔记_第256张图片

Vue学习笔记_第257张图片

 以下写法不建议:

Vue学习笔记_第258张图片

七、绑定style样式 

Vue学习笔记_第259张图片

Vue学习笔记_第260张图片 Vue学习笔记_第261张图片

Vue学习笔记_第262张图片 或者:

Vue学习笔记_第263张图片

Vue学习笔记_第264张图片

 八、条件渲染

 Vue学习笔记_第265张图片

Vue学习笔记_第266张图片v-show为true就显示,为false就不显示

Vue学习笔记_第267张图片

Vue学习笔记_第268张图片

v-show的底层就是调整display属性

Vue学习笔记_第269张图片

v-if就是标签也会没有

 Vue学习笔记_第270张图片

需求:

Vue学习笔记_第271张图片 Vue学习笔记_第272张图片

 如果说变化频率很高,建议用v-show

if else if和v-if v-else if:

 有多个判断建议用v-else-if

Vue学习笔记_第273张图片

Vue学习笔记_第274张图片 如果需要使用v-if和v-else-if或v-else要求中间必须连贯,也就是这四个div必须挨在一起

Vue学习笔记_第275张图片打断前的有效,打断后的无效

Vue学习笔记_第276张图片 Vue学习笔记_第277张图片

Vue学习笔记_第278张图片 template不影响结构,但是template只能配合v-if使用,不能配合v-show

Vue学习笔记_第279张图片

Vue学习笔记_第280张图片

 九、列表渲染

Vue学习笔记_第281张图片

Vue学习笔记_第282张图片

Vue学习笔记_第283张图片 Vue学习笔记_第284张图片Vue学习笔记_第285张图片

 Vue学习笔记_第286张图片

Vue学习笔记_第287张图片

Vue学习笔记_第288张图片

Vue学习笔记_第289张图片

Vue学习笔记_第290张图片 Vue学习笔记_第291张图片

Vue学习笔记_第292张图片 Vue学习笔记_第293张图片

Vue学习笔记_第294张图片 Vue学习笔记_第295张图片

Vue学习笔记_第296张图片

Vue学习笔记_第297张图片

Vue学习笔记_第298张图片

Vue学习笔记_第299张图片

 Vue学习笔记_第300张图片

上面可以看出先输出的是value后是key

Vue学习笔记_第301张图片 Vue学习笔记_第302张图片

 Vue学习笔记_第303张图片

Vue学习笔记_第304张图片 Vue学习笔记_第305张图片

Vue学习笔记_第306张图片

 Vue学习笔记_第307张图片

 遍历数组、对象用的最多

Vue学习笔记_第308张图片

十、key的作用和原理 

key就是给节点一个标识,相当于人的身份证

Vue学习笔记_第309张图片

Vue学习笔记_第310张图片Vue学习笔记_第311张图片 Vue学习笔记_第312张图片

Vue学习笔记_第313张图片 Vue学习笔记_第314张图片

Vue学习笔记_第315张图片 Vue学习笔记_第316张图片

 效果:

Vue学习笔记_第317张图片

Vue学习笔记_第318张图片 Vue学习笔记_第319张图片

如果不写key,默认key就是index 

Vue学习笔记_第320张图片

Vue学习笔记_第321张图片

Vue学习笔记_第322张图片

你可能感兴趣的:(vue,学习)