Vue学习笔记

news2024/11/20 20:28:04

课程来源: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的时候建议用<script></script>标签引入

学习的时候用开发版本

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

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

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

 简要说一下:

win+R然后输入regedit

 

到此设置完毕! 

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

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

 页面上是没有任何内容的,但是console下会有两个小提示:

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

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

第一个提示的解决方案:

然后就会进入到github上:

 点击Get the Chrome Extension,适用于vue2.0并且是对应谷歌浏览器的

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

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

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

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

 

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

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

 

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

 回到vue的api文档中:找到productionTip

 

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

二、Hello World小案例

 

 

 所以解决方案就是直接在目录下给一个图标即可

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

 ​​​​​​

 上图中的配置对象指的是el,data。

三、分析Hello案例

如果有两个容器

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

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

 所以一个容器只能被一个vue实例所接管,所以容器和vue实例只能是一一对应的关系

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

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

 

 

 

 

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

开发版本的:

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

 生产版本:就直接会报底层错误,不会有第一行那个友好的提示:

四、模板语法

 

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

 

 所以就会报错:

 

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

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

 

 

如果想有两个name该咋实现:

五、数据绑定

 v-bind是单向绑定 

 v-model是双向绑定

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

 

 

六、el与data的两种写法

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

该怎么设置呢?

el的两种写法:

 

 data的两种写法:

 

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

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

七、理解MVVM

 

 

 ​​​​​​

 2022年11月21日:

一、Object.defineProperty方法

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

给一个对象定义属性使用

(ES6中学过)

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

 age之所以颜色淡一点,表示这个age不能被枚举,表示age属性不参与遍历

验证一下:

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

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

 

 也可以用for循环:

 

 

 如果是直接给对象一个age属性并赋值,这个值是可以改变的

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

 如果想要修改该如何设置呢?设置writable为true即可

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

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

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

 那如何才能删掉呢?

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

getter和setter比较重要

二、理解数据代理

三、Vue中的数据代理 

控制台输入vm

 

 

 

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

 退回之前的效果:

 

 

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

 如果有数据代理:

 

四、Vue的事件处理 

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

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

 innerText可以拿到按钮里面的文字

 this就拿到了vm

怎么验证呢?

 打印的结果为true

 

 

五、事件修饰符

 

 

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

 或者可以直接在click后面.stop

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

 

 

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

 现在想要它在捕获阶段直接处理事件:

 

如果加上了.self:

 

 

 scroll是滚动条发生滚动触发事件

 wheel是鼠标滚动轮的滚动

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

现在用滚轮事件:

 

 所以可以加.passive

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

六、键盘事件

 

希望输入完之后按一下ctrl键,然后控制台打印相应的东西,这里没有打印出来,不仅是ctrl,还有:(上面有使用的方式)

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

七、事件总结

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

 用三种方式实现这个案例:第一个是{{}}、第二个是methods,第三个是计算属性

 

 

 如果以上那种写法,后面firstName还有其他条件就会一直写下去,这样不友好

用方法实现:

 

效率不高

九、计算属性

 

 

 

 

十、计算属性简写

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

2022年11月22日: 

一、天气案例

比较好用的插件:

 这个插件就是当你写代码的时候会有很多提示

 

 

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

 

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

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

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

 假设改成window.alert()

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

解决方案:把window给到vue实例

二、监视属性

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

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

 

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

 看下能不能监视计算出来的属性:

 除此之外还可以这么写:

三、深度监视 

 

 需求:监视a的变化

 正确写法:

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

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

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

四、监视的简写形式

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

 

 所有vue管理的函数都要写成普通函数,不要写成箭头函数

五、watch和computed对比

 

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

监听:

 计算属性

六、绑定class样式 

 

 

 

 使用vue:

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

 

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

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

乘以3就是[0,3)

Math.floor是向下取整

 

 

 

 

 以下写法不建议:

七、绑定style样式 

 

 或者:

 八、条件渲染

 

v-show为true就显示,为false就不显示

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

v-if就是标签也会没有

 

需求:

 

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

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

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

 如果需要使用v-if和v-else-if或v-else要求中间必须连贯,也就是这四个div必须挨在一起

打断前的有效,打断后的无效

 

 template不影响结构,但是template只能配合v-if使用,不能配合v-show

 九、列表渲染

 

 

 

 

 

 

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

 

 

 

 

 遍历数组、对象用的最多

十、key的作用和原理 

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

 

 

 

 效果:

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1】Anaconda基本命令以及相关工具:jupyter、numpy、Matplotilb

目录 一、Anaconda ◼ anaconda命令行操作 二、jupyter notebook 1 jupyter的基础使用 ◼ jupyter的启动 ◼ ipynb文件的新建、重命名、删除 ◼ 菜单说明 ◼ 运行cell单元块 ◼ 编写文档笔记 2 jupyter的高级使用&#xff1a;常用魔法命令 ◼ writefile pycat run …

【Golang】来用GoLand开发第一个Go程序

​ &#x1f4d3;推荐网站(不断完善中)&#xff1a;个人博客 ​ &#x1f4cc;个人主页&#xff1a;个人主页 ​ &#x1f449;相关专栏&#xff1a;CSDN专栏、个人专栏 ​ &#x1f3dd;立志赚钱&#xff0c;干活想躺&#xff0c;瞎分享的摸鱼工程师一枚 文章目录&#x1f34a…

【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏

基于JAVA的坦克大战小游戏--入门级小游戏零、项目获取一、项目简介二、开发环境三、游戏玩法四、运行截图零、项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 一、项目简介 本项目是基于…

基于Java+Spring+Strusts2+Hibernate 社区智慧养老服务平台 系统设计与实现

一.项目介绍 本系统分为前端 和 后端 两块&#xff0c; 前端包括&#xff1a;首页、健康新闻、疾病预防、养生之道、动态通知、登录和注册 各模块的文章点击查看&#xff0c;支持评论以及回复功能&#xff0c; 登录成功之后点击欢迎您:后面的账号即可进入后台管理 后端包括&…

老杨说运维 | 非常重要,事关转型

《荀子》有云&#xff1a;“水能载舟&#xff0c;亦能覆舟。”在公司日常运营过程中&#xff0c;数据指标就像是水&#xff0c;孕育着生命&#xff0c;承载着万物。科学的数据指标能指引公司在正确的道路上不断前进&#xff0c;使平淡无常的业务焕发新生&#xff0c;而不合理的…

Qt QUndoStack、QUndoCommand(实现撤回和回撤)

用到的类: 1 QUndoStack&#xff1a; 一个存放 QUndoCommand 命令的栈. 2 QUndoCommand&#xff1a;The QUndoCommand class is the base class of all commands stored on a QUndoStack. 3 QUndoView&#xff1a;The QUndoView class displays the contents of a QUndoStack.&…

C#上位机系列(3)—定时器和串口的介绍

本文是讲解C#.net平台的Winform框架下的第三个内容&#xff0c;手把手介绍上位机项目的创建方式以及一些写软件时常用的功能&#xff0c;讲解从零开始的每一个步骤。 本次介绍上位机中定时器的使用和串口的配置 定时器&#xff1a;每过一段设定好的时间进入执行函数&#xff…

SIMULIA现实仿真解决方案 SIMULIA仿真模拟应用程序

由 3DEXPERIENCE 平台提供技术支持&#xff0c;SIMULIA 可提供仿真模拟应用程序&#xff0c;这些应用程序使用户能够探究现实生活中产品、自然和生命的行为 SIMULIA 通过虚拟测试实现性能要求促进协作。其产品组合提供强大的工具&#xff0c;能够对采用V6设计的零件、组件和产…

敏捷开发失败的五个原因以及解决方案

作者&#xff1a;David Bevans , Mendix公司高级内容营销经理 敏捷开发是一个可以改变软件交付方式的框架且效果十分惊人&#xff0c;但鉴于需要反复不断规划、测试、集成以及其他进行中的开发方式&#xff0c;敏捷开发在某些情况下行不通。下文将对常见的敏捷开发失灵以及相应…

菁染料CY3/CY5/CY7标记链霉亲和素/胰岛素,CY3/CY5/CY7-Streptavidin/Insulin

产品名称&#xff1a;菁染料CY3/CY5/CY7标记链霉亲和素/胰岛素 英文名称&#xff1a;CY3/CY5/CY7-Streptavidin/Insulin 链霉亲和素(streptavidin下称SA)是与亲和素(avidin下称AV)有相似生物学特性的一种蛋白质&#xff0c;是streptomyces avidinii菌的分泌物&#xff0c;其分…

AotuDL中Linux环境下运行pix2pix-tensorflow的环境配置(tensorflow==1.8.0 python==3.6)

目录写在前面1. 租用实例时基础镜像的选择2. 配置环境3. 实验记录写在前面 &#x1f340;windows环境下运行&#xff1a;【用于图像修复、数据增强等】结合官方代码教程&#xff0c;在Windows 10下运行pix2pix-tensorflow&#xff08;tensorflow1.4.0 python3.6&#xff09; A…

【网站架构】服务器弹性伸缩不能全自动,实际如何追加服务器

大家好&#xff0c;欢迎来到停止重构的频道。 本期&#xff0c;我们讨论大型网站的伸缩性。 伸缩性指的是通过自动增减服务器数量以适应用户量或压力。 这些年&#xff0c;微服务、ServerLess、K8S等技术&#xff0c;都让人有一种服务器自动伸缩很容易实现的错觉。 其实&…

最短路径问题

目录 一、前言 二、算法讲解 1、Dijkstra--朴素算法&#xff1a;O(n * n) 2、Dijkstra--堆优化算法&#xff1a;O(mlogm) 3、Bellman_ford贝尔曼算法&#xff1a; O(n * m) 4、Spfa算法&#xff1a;O(n * m) 5、Spfa处理负环&#xff1a;O(n * m) 6、Floyd算法&#xf…

iOS 列表页面实时刷新解决方案

iOS 列表页面实时刷新解决方案 一、背景介绍 1.1 问题的出现 客户要求APP客户端每次切换Tab&#xff0c;都需要从服务器去获取最新的数据&#xff0c;所以每次切换Tab&#xff0c;客户端都会去主动刷新接口&#xff0c;以获取最新的数据。但是实际发现&#xff0c;每次切换T…

基于FPGA MIPS CPU设计学习(1)

关于什么是MIPS以及MIPS架构可参考文章: MIPS架构与指令简介 1 MIPS寄存器学习 MIPS寄存器详细解释如下: • 0 : 即 0: 即 0:

【Shell 脚本速成】04、Shell 脚本格式化输出与用户交互

目录 一、shell格式化输出 1、echo命令 案例演示&#xff1a; 2、输出颜色字体 3、综合案例 二、 用户交互 1、read命令 2、交互输入案例 计算机程序其实就是三步:输入、运算、输出&#xff0c;这个理论也适应于shell编程。 那么计算机是如何将信息按照比较舒服的格式输…

Unity - BRP管线关闭 - UpdateDepthTexture的绘制

最近一直忙着跟项目打杂。。。 比较少时间进修&#xff0c;充电。。。难受香菇 但是 unity 的踩坑经验倒是增加了不少&#xff08;还有很多坑的经验我都懒得写了&#xff0c;但是这些坑浪费查资料时间&#xff0c;还不如自己记下来&#xff0c;便于日后如果还有 BRP 项目的处理…

Neptune CHT-C助力零束打造智舱界王者

9月27日&#xff0c;上汽子品牌飞凡汽车的首款旗舰车型——飞凡R7刚一上市就牢牢吸引了众多视线&#xff0c;在了解了其配置后&#xff0c;用户纷纷称其为“智驾界卷王”。 飞凡R7搭载的RISING MAX 31巨幕&#xff0c;由中国品牌车型最大尺寸的43英寸宽幅真彩三联屏和全球首发量…

CSS的元素显示模式

元素显示模式是什么&#xff1f;&#xff1a; 由于网页中的标签非常多&#xff0c;在不同地方会用到不同类型的标签&#xff0c;了解他们的特点可以更好的布局我们的网页。 元素显示模式就是元素(标签)以什么方式进行显示&#xff0c;比如<div>独占一行&#xff0c;比如…

线索二叉树

目录 一、线索二叉树的类型定义 二、各种线索化的二叉树 三、中序线索二叉树的算法 完整代码&#xff1a; 一、线索二叉树的类型定义 typedef struct BTNode {ElemType data;//数据域struct BTNode* lchild;//左孩子或线索指针struct BTNode* rchild;//右孩子或线索指针int lt…