Vue学习笔记总结

2023-11-06

目录

Vue的安装

(1)官网下载

(2)CDN

(3)NPM

Vue实例

(1)创建实例

(2)数据与方法

(3)钩子函数

模板语法

(1)插值

(2)指令

计算属性

(1)初识计算属性

(2)计算属性缓存 vs 方法

(3)计算属性 vs 侦听属性

(4)计算属性的 setter

Class与Style绑定

(1)动态绑定Class属性

(2)动态绑定Style属性

渲染

(1)v-if

(2)v-show

(3)v-if 与 v-show的区别

(4)v-for

事件

(1)监听事件

(2)事件修饰符

(3)按键修饰符

(4)系统修饰符

组件

(1)组件是什么?

(2)组件的定义

(3)组件全局注册与局部注册的区别

(4)通过Prop向子组件传递数据

(5)单个根元素

(6)监听子组件事件

(7)插槽

(8)动态组件


Vue的安装

各位小伙伴可以去参考这位大佬的教程,写的非常详细

Vue实例

(1)创建实例

        每个Vue应用都是通过Vue函数创建一个新的Vue实例开始的:

var vm = new Vue({
  // 选项
})

(2)数据与方法

        当一个 Vue 实例被创建时,它将 data 对象中的所有的 属性加入到 Vue 的响应式系统中。当这些数据改变时,视图会进行重渲染。

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

//上面的实例等价于 ===
var vm = new Vue({
    data: {
        a: 1
    }
})

// 获得这个实例上的 property
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置 property 也会影响到原始数据
vm.a = 2
data.a // => 2

// ……反之亦然
data.a = 3
vm.a // => 3

 值得注意的是只有当Vue实例被创建时就已经存在于 data 中的 属性 才是响应式的,如果再Vue实例创建完成后再添加一个新的 property,那么对该新添加的 property 任何改动的不会触发视图的更新,比如:

//实例创建后再新加一个 属性 b
vm.b = 'hello vue'


// 如果此时对属性 b 进行数据改动,也不会触发视图的更新
vm.b = 'hi vue'    //不会触发视图的更新

(3)钩子函数

        每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会自动执行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。

Vue实例生命周期共有8个不同阶段:①beforeCreate、②created、③beforeMount、④mounted、⑤beforeUpdate、⑥updated、⑦beforeDestory、⑧destoryed

口诀:创建前后、挂载前后、更新前后、销毁前后(这样记起来是不是方便了许多)

到这里可能有些小伙伴会说了:流程图看是看了,可是还是不太清楚这些钩子函数到底在时候会被执行呢?这位小伙伴先别急,这就给你详细讲来:

钩子函数 触发时机 在此阶段可以做的事情
beforeCreadted 会在Vue实例初始化完成、props 解析之后、data() 和 computed 等选项处理之前立即调用。
created 当这个钩子被调用时,以下内容已经设置完成:响应式数据(data)、计算属性方法侦听器。但是此时挂载阶段还未开始,也就是 $el 属性仍不可用。 一般可以在此阶段调用某些方法请求数据为mounted渲染做准备
beforeMount 当这个钩子被调用时, $el属性已经初始化完毕,组件已经完成了其响应式状态的设置,但还是虚拟的dom节点,还没有真正开始创建 DOM 节点。
mounted vue实例挂载完成,实例对象中所有数据都已渲染到html页面(用户可以看的到页面数据) 配合路由钩子使用
beforeUpdate 在组件即将因为一个响应式状态变更而更新其 DOM 树之前调用(data更新之前调用)   这个钩子可以用来在 Vue 更新 DOM 之前访问 DOM 状态。
updated 在组件因为一个响应式状态变更而更新其 DOM 树之后调用(data更新完成后调用) 数据更新时,做一些处理(此处也可以用watch进行监听)
beforeDestroy 组件销毁时触发
destroyed 组件销毁时触发,vue实例解除了事件监听以及和dom的绑定(无响应了),但DOM节点依旧存在 组件销毁时进行提示

3.1) 这里用代码给大家演示一下 创建前后、挂载前后 这几个常用的钩子(大家可能有疑问的点应该也是在这几个钩子函数上,不过没关系,相信各位小伙伴看完演示就懂了):

(3.1.1)beforeCreate

<div id="app">
    {{text}}: <input v-model="inputData">
</div>



<script>
    var vm = new Vue({
        el: '#app',
        data() {
            return {
                text: '输入框',
                inputData: '请输入内容'
            }
        },
        beforeCreate(){
            console.log('==============' + 'beforeCreated' + '===================')
            console.log(this.$el);            //undefined
            console.log(this.$data);          //undefined
            console.log(this.text);           //undefined
            console.log(document.getElementsByTagName("input")[0].value);   
            debugger
        },
</script>

当Vue实例创建完成之后会立即调用beforeCreate()钩子函数,此时实例对象中 el、data属性还没开始初始化,也就是初始化值都为空

beforeCreate生命周期时在浏览器看到的界面是这样的:

 PS:可以看到 el、text、inputData等属性值都还没有开始初始化,各位小伙伴应该也都知道:在vue中是通过 el 属性绑定 html标签的,此时el为空,也就意味着 html标签还没有与vue实例进行绑定,那自然而然在标签上使用vue指令也不会被浏览器解析,所以在浏览器会被插值表达式当做字符串显示: {{text}}

(3.1.2)created

当这个created()钩子被调用时,以下内容已经初始化完成:data、computed、methods 和watch

created生命周期时浏览器看到的界面(观察控制打印):

 因为数据已经初始化完成,所以当打印

console.log(this.$data);
console.log(this.text);

时,自然能看得到结果,但是注意此时 el 还是为空,所以vue实例还没开始绑定html标签元素

(3.1.3)beforeMount

当执行到 beforeMount()钩子函数时,html模板已经编译好了(解析html标签上的所有vue指令),也就是 el 初始化完成,但是此时尚未将挂载到页面中,所以看到得页面还是旧的

beforeMount生命周期时浏览器看到的界面:

 (3.1.4)mounted

执行到 mounted()钩子时,就表示整个 vue 实例真正的初始化完毕,编译好的模板也被挂载到了页面,此时组件也从 创建阶段 进入了 运行阶段

mounted生命周期时浏览器看到的界面:

完整代码我给大家放在这里了,感兴趣的小伙伴可以去试试,印象会更加深刻~

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>生命周期讲解</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
    {{text}}: <input v-model="inputData">
</div>
<script>
    var vm = new Vue({
        el: '#app',
        data() {
            return {
                text: '输入框',
                inputData: '请输入内容'
            }
        },
        beforeCreate(){
            console.log('==============' + 'beforeCreated' + '===================')
            console.log('el-->',this.$el);
            console.log('data-->',this.$data);
            console.log('text-->',this.text)
            console.log('input中的value--->',document.getElementsByTagName("input")[0].value);       // 标签还没有数据
            debugger
        },
        created(){
            console.log('==============' + 'created' + '===================')
            console.log('el-->',this.$el);
            console.log('data-->',this.$data);
            console.log('text-->',this.text)
            console.log('input中的value--->',document.getElementsByTagName("input")[0].value);       // 标签还没有数据
            debugger
        },
        beforeMount(){
            console.log('==============' + 'beforeMount' + '===================')
            console.log('el-->',this.$el);
            console.log('data-->',this.$data);
            console.log('text-->',this.text)
            console.log('input中的value--->',document.getElementsByTagName("input")[0].value);       // 标签还没有数据
            debugger
        },
        mounted(){
            console.log('==============' + 'mounted' + '===================')
            console.log('el-->',this.$el);
            console.log('data-->',this.$data);
            console.log('text-->',this.text)
            console.log('input中的value--->',document.getElementsByTagName("input")[0].value);       
            debugger
        },
    })
</script>
</body>
</html>

模板语法

(1)插值

(2)指令

计算属性

(1)初识计算属性

(2)计算属性缓存 vs 方法

(3)计算属性 vs 侦听属性

(4)计算属性的 setter

Class与Style绑定

(1)动态绑定Class属性

(2)动态绑定Style属性

渲染

(1)v-if

(2)v-show

(3)v-if 与 v-show的区别

(4)v-for

事件

(1)监听事件

(2)事件修饰符

(3)按键修饰符

(4)系统修饰符

组件

(1)组件是什么?

(2)组件的定义

(3)组件全局注册与局部注册的区别

(4)通过Prop向子组件传递数据

(5)单个根元素

(6)监听子组件事件

(7)插槽

(8)动态组件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue学习笔记总结 的相关文章

  • 在占位符中添加 HTML

    我喜欢使用 HTML 占位符 因为它有助于向用户描述他们需要输入的内容类型 但是 有时您需要为用户提供更多信息 而不仅仅是简单的句子 基本上我希望能够在我的文本区域占位符中添加换行符 制表符等 我听说过使用特殊编码来做到这一点 并且已经使用
  • 量角器:向下滚动

    我的页面上有一个按钮 当用户向下滚动时可见 因此 量角器测试给了我一个错误 UnknownError 未知错误 元素在点 94 188 处不可单击 我尝试使用 browser executeScript window scrollTo 0
  • 在 HTML TextArea 中设置(或读取)光标/插入符的值

    我正在尝试 但失败了 在 HTML 文本区域中实现拖放机制 使用 jQuery 或 Scriptaculous 我们都使用 拖放机制相对容易 因此我愿意接受使用这两者之一的答案 问题是 我似乎找不到读取或设置插入点的方法 我最终想要做的是确
  • 在原子操作中测试和递减?

    我刚刚发现了一个恼人的错误 它基本上是一个竞争条件 为了便于论证 我们假设一个非常简单的文档结构 例如 id XXX amount 100 集合中存在数百个这样的文档 并且由多个编写器访问 这些编写器有效地尝试将数量降低任何值 但绝不会低于
  • 使用过渡添加子项时 div 的平滑增长

    尽管使用了以下代码 但其行为并不符合我的预期transition所以可能有些事情我不明白 理想情况下 单击该按钮会将一个子项添加到id2div 并制作id1分区增长smoothly因此 function id1 button click g
  • 桌子的动态高度(vuetify)

    App vue
  • 等待动态加载脚本

    在我的页面正文中 我需要插入以下代码作为 AJAX 调用的结果 p Loading jQuery p p Using jQuery p 我不能使用 load 由于文档已经加载 因此该事件不会触发 这安全吗 如果没有 我如何确保在执行自定义生
  • 在java中将DataURL图像转换为图像文件

    我在我的 java servlet 中接收图像 DataURL 它看起来像 data image jpeg base64 9j 4AAQSkZJRgABAQAAAQABAA 我需要将其另存为图像文件 我该怎么做 The simplest w
  • jQuery 或 JavaScript 中的“$”符号是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中 符号的含义是什么 https stackoverflow com questions 1150381 what is the meaning of sign in javas
  • jQuery 选择器在控制台中不起作用

    我一辈子都无法解决这个问题 我正在运行 js 容器状态 是页面上正在运行的 js 的控制台日志 它显示一个选择器 但如果我想在控制台中执行任何操作 它只会返回 null 我假设我在某个地方过度编写了 jQuery 函数 就好像我调用了 jQ
  • 如何使用ckeditore通过ajax发送数据?

    我在 django 中有一个表格 这是 撰写邮件 形式 我将此表单从视图发送到我的模板 然后应用 ckeditor 来更改正文样式 我希望通过 ajax 发布此表单 当使用 ckeditor 时 body 字段的值不会随 request P
  • Javascript/Node 中从不执行用户代码的隐藏线程:是否可能,如果可能,是否会导致竞争条件的神秘可能性?

    根据评论 答案 请参阅问题底部的更新 这个问题实际上是关于可能性的hidden不执行回调的线程 我有一个关于潜在的神秘场景的问题 涉及节点请求模块 https www npmjs com package request其中 A 构建完整的
  • 适用于 HTML5 混合应用程序的 CORS

    我读过很多关于 CORS 的文章 以及允许 Access Control Allow Origin 如何成为 Web 服务器的安全漏洞 但没有一篇文章解释了如何允许 HTML5 混合应用程序访问某些不允许使用通配符 的域上托管的 Web 服
  • 带有子节点的拖放区域

    我有一个带有多个子节点的拖放区域 主要元素有dropenter and dropleave事件 但是 如果您将文件拖动到主元素内部和子节点上方 则dropleave被触发 如何处理 以便dropleave仅当拖动的元素和鼠标位于主元素之外时
  • “WebSocket 在连接建立之前已关闭”是什么意思?

    我正在使用 JavaScript 和联盟平台 http www unionplatform com我该如何诊断这个问题 非常感谢 如果你去http jsbin com ekusep 6 edit http jsbin com ekusep
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • IE7 问题 - 当禁用文件下载自动提示时无法下载流式文件

    我的应用程序是基于 J2EE JSP Servlet 的 当我尝试从 JSP 打开新窗口 弹出窗口 并调用 Servlet 操作 例如 Streamer do 以在该弹出窗口内传输 PDF 文件时 我遇到了问题 问题 当 IE 7 gt 工
  • 如何将字符串转换为 Javascript 中可执行的代码行?

    我有以下代码 console log I am var x console log Alive 现在我只想使用x执行分配给它的代码字符串 例如 我什至可能不知道 x 的值 但只是想执行它 这可能吗 eval https developer
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers
  • 查看元素的所有 dom 事件

    我有一个 jQuery UI 日期选择器 当您单击日期时 它会清除我的 URL 哈希值 并且不会更改文本框中的日期 我假设某个地方还有其他一些 JavaScript 实用程序 它也正在调用某种委托事件 抛出错误并终止 jquery 处理程序

随机推荐

  • Jmeter性能测试 (入门)

    Jmeter是一款优秀的开源测试工具 是每个资深测试工程师 必须掌握的测试工具 熟练使用Jmeter能大大提高工作效率 熟练使用Jmeter后 能用Jmeter搞定的事情 你就不会使用LoadRunner了 本文将通过一个实际的测试例子 来
  • XDOJ最长单词的长度

    试题名称 最长单词的长度 时间限制 1 秒 内存限制 256KB 问题描述 给定一个英文句子 统计这个句子中最长单词的长度 并在屏幕上输出 输入说明 从键盘输入一个英文句子 句子中只含有英文字符和空格 句子以 结束 句子总长不超过100个字
  • Linux shell:脚本读取文件内容赋给变量的三种方式

    前段时间用到读取配置文件的相关信息 搜索到一些比较好的方法 整理一下作为笔记方便以后查看 先假设现在有一个配置文件net config 内容如下 ID 123 IP 192 168 1 1 Name test 现在我们可以通过以下三种脚本读
  • C++ 点圆运算(构造与析构)

    题目描述 设计一个点类Point 包含私有属性x坐标和y坐标 操作包括 1 构造函数 要求满足两个条件 1 能够使用类Point去创建一个对象数组 缺省构造方法 2 能够接收外来输入的x和y坐标做初始化 提示 构造函数重载 2 析构函数 把
  • Windows Server 2012 R2 -网站—安全设置-IP限制连接(VMware workstation环境)

    安装IP和域限制组件 拒绝特定地址或范围 可选拒绝类型 401 未经授权 403 已禁止 404 未响应 中断 中止 启用域名限制 可以通过域名限制连接 也可以限制一个域 sayms local 启用代理模式 若被限制的客户端通过代理服务器
  • Maven创建Web项目时如何设置JDK的版本

    使用命令 mvn Dwtpversion 1 0 eclipse eclipse 之后 导入的项目 Project Facet 的 java 还是 1 4 而当前使用的 Eclipse 上的设置是高于1 4版本 此时可以通过设置pom插件来
  • Java VisualVM 插件地址,安装Visual VM插件,修改下载插件地址使插件可以直接在JVisualVM中进行下载

    Java VisualVM 插件地址 打开Java VisualVM检查更新插件时 默认的连接连不上 通过浏览器访问之后发现默认的服务器已经404 新地址已经迁移到github 下面这个地址里面有不同版本jdk对应的插件中心地址 https
  • 2003-2019年上市公司治理水平(含原始数据和具体计算过程stata代码)

    2003 2019年上市公司治理水平 1 数据来源及数据说明在压缩包内 2 时间跨度 2003 2019年 3 区域范围 3669家上市公司 4 指标说明 该指标计算的方法的do文件以及参考文献都放在文件中 有需要的小伙伴可以自取 运用主成
  • __declspec(dllexport)与__declspec(dllimport)

    区别 他们都是DLL内的关键字 即导出与导入 他们是将DLL内部的类与函数以及数据导出与导入时使用的 dllexport是在这些类 函数以及数据的申明的时候使用 用他表明这些东西可以被外部函数使用 即 dllexport 是把 DLL中的相
  • Idea Git 已提交代码版本回滚

    本文主要记录在 Idea 中 如何通过 Git 回滚本地仓库和远程仓库代码版本 一 提交本地仓库代码回滚 1 模拟提交到本地仓库 模拟一次提交 提交到本地仓库 未提交到远程仓库 本地仓库 有 远程仓库 无 2 复制提交版本号 复制你想回到的
  • Unity 3D 碰撞体(Collider)

    在游戏制作过程中 游戏对象要根据游戏的需要进行物理属性的交互 因此 Unity 3D 的物理组件为游戏开发者提供了碰撞体组件 碰撞体是物理组件的一类 它与刚体一起促使碰撞发生 碰撞体是简单形状 如方块 球形或者胶囊形 在 Unity 3D
  • 面渣逆袭:分布式十二问,万字图文详解

    大家好 我是老三 不管今年金三银四如何 面渣逆袭系列继续 这期我们来看看分布式 分布式理论 1 说说CAP原则 CAP原则又称CAP定理 指的是在一个分布式系统中 Consistency 一致性 Availability 可用性 Parti
  • DS18B20测量温度

    文章目录 一 DS18B20读取温度步骤 二 初始化复位时序 2 发送一个字节 二 读取数据 1 读取一个Bit 2 读取一个字节 三 启动温度转换 四 判断转换完成 五 读取温度 程序地址 一 DS18B20读取温度步骤 一般在使用DS1
  • 【算法练习】最多等和不相交连续子序列

    200分 题目描述 给定一个数组 我们称其中连续的元素为连续子序列 称这些元素的和为连续子序列的和 数组中可能存在几组连续子序列 组内的连续子序列互不相交且有相同的和 求一组连续子序列 组内子序列的数目最多 输出这个数目 输入描述 第一行输
  • 计算机显卡设置方法,显卡在哪里设置 显卡设置方法【详细介绍】

    电脑中最重要的地方就是显示了 因为电脑cpu的高度运算和计算数据都是因为显卡在一直工作 所以很好的显卡设置能让我们的电脑使用和运行上更加完美 很多人会问那么显卡在哪里设置呢 怎么设置才好呢 想知道就和小编一起看下来吧 显卡在哪里设置 1 显
  • 怎么能跳过苹果服务器降级系统,苹果ios11手机怎样将系统降级?简单三步即可完成降级!...

    近日 苹果偷偷开启了降级通道 那些想降级回iOS 10的小伙伴现在有机会了 那么iPhone手机如何降级 下面为大家带来iOS 11降级教程 一起来看看 iOS 11降级教程 iPhone 5 5S 6 6S 7系列机型的老版本固件 苹果都
  • Android dp px ppi pt等概念的理解

    做Android开发过程中 总会用到px dp pt等概念 下面对它们代表的意义以及互相之间的关系做简单的介绍 目录 1 px 2 ppi 3 pt 4 dp 5 Android获取屏幕状态信息 1 px 像素 就是一个颜色点 一个像素点
  • 深度学习基础------前向传播与反向传播

    当前 深度学习已经应用到很多领域 无人驾驶汽车 黑科技以及图像分类等等 这些前沿的科技也面临许多挑战 如无人驾驶汽车需要进行物体的检测 行人的检测 标志的识别以及速度识别等等 图像分类已经成为一项重要技术 它是计算机视觉的核心任务 其困难之
  • 客户端启动耗时分析:基于Qt、C++的Windows应用程序

    客户端的启动作为所有交互的开端 经常被拿来进行分析 比较和优化 其中讨论比较多的就是启动耗时 本文整理了一些基于Qt C 的Windows客户端的启动耗时问题和分析经验 1 背景 客户端启动影响用户体验 启动耗时变久经常是由于工程师本身经验
  • Vue学习笔记总结

    目录 Vue的安装 1 官网下载 2 CDN 3 NPM Vue实例 1 创建实例 2 数据与方法 3 钩子函数 模板语法 1 插值 2 指令 计算属性 1 初识计算属性 2 计算属性缓存 vs 方法 3 计算属性 vs 侦听属性 4 计算