第二章 Vue 核心技术

2023-10-30

2.1 Vue 入门开发

2.1.1 创建工程

  • 在本地创建文件夹D:\Project\vue\WebStudy
    在这里插入图片描述
  • 打开 VS Code ,点击 File > Open Folder , 找到 D:\Project\vue\WebStudy 打开
  • 单击 WEBSTUDY 右侧的新建目录图标,创建目录: vue-01-core
    在这里插入图片描述

2.1.2 创建 HTML 和 安装 vue 模块

  • 在 vue-01-core 目录下新建一个页面 01-helloworld.html
  • 在 vue-01-core 目录下的命令行窗口,安装2.6.10版本的 vue 模块
    在这里插入图片描述

2.1.3 编写HTML页面

  • 编写步骤:

  • 采用 <script> 标签引入 vue.js 库

  • 定义一个 <div>

  • new Vue() 实例化Vue应用程序
    el 选项: 元素element的缩写,指定被 Vue 管理的 Dom 节点入口(值为选择器 ),必须是一个普通的HTML 标签节点,一般是 div。
    data 选项:指定初始化数据,在 Vue 所管理的 Dom 节点下,可通过模板语法来进行使用

  • 标签体显示数据: {{xxxxx}}

  • 表单元素双向数据绑定: v-model

  • 注意: el 的值不能为 html 或 body

  • 源码实现
    在这里插入图片描述

2.2 分析 MVVM 模型

常见面试题:什么是 MVVM 模型?

  • MVVM 是 Model-View-ViewModel 的缩写,它是一种软件架构风格
    Model:模型, 数据对象(data选项当中的)
    View:视图,模板页面(用于渲染数据)
    ViewModel:视图模型,其实本质上就是 Vue 实例

  • 它的哲学思想是: 通过数据驱动视图,把需要改变视图的数据初始化到 Vue中,然后再通过修改 Vue 中的数据,从而实现对视图的更新。

  • 声明式编程:按照 Vue 的特定语法进行声明开发,就可以实现对应功能,不需要我们直接操作Dom元素
    命令式编程:Jquery它就是,需要手动去操作Dom才能实现对应功能。

在这里插入图片描述

2.3 Vue Devtools 插件安装

Vue Devtools 插件让我们在一个更友好的界面中审查和调试 Vue 项目。

  • 火狐浏览器 扩展与主题 - 搜索Vue Devtools-点击添加
    在这里插入图片描述
  • 安装效果如下
    在这里插入图片描述
  • 当你访问Vue开发的页面时,按 F12 可 Vue 标签页
    在这里插入图片描述

2.4 模板数据绑定渲染

可生成动态的HTML页面,页面中使用嵌入 Vue.js 语法可动态生成

  1. {{xxxx}} 双大括号文本绑定
  2. v-xxxx 以 v- 开头用于标签属性绑定,称为指令

2.4.1 双大括号语法 {{}}

  • 格式: {{表达式}}
  • 作用:
    使用在标签体中,用于获取数据
    可以使用 JavaScript 表达式
  • 案例源码:
    在这里插入图片描述

2.4.2 一次性插值 v-once

  • 通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。在这里插入图片描述

2.4.3 输出HTML指令 v-html

  • 格式: v-html=‘xxxx’

  • 作用:
    如果是HTML格式数据,双大括号会将数据解释为普通文本,为了输出真正的 HTML,你需要使用 v-html 指令。
    Vue 为了防止 XSS 攻击,在此指令上做了安全处理,当发现输出内容有 script 标签时,则不渲染
    XSS 攻击主要利用 JS 脚本注入到网页中,读取 Cookie 值(Cookie一般存储了登录身份信息),读取到了发送到黑客服务器,从而黑客可以使用你的帐户做非法操作。
    XSS 攻击还可以在你进入到支付时,跳转到钓鱼网站。

  • 案例源码:在这里插入图片描述

  • 效果图
    在这里插入图片描述

2.4.4 元素绑定指令 v-bind

  • 完整格式: v-bind:元素的属性名=‘xxxx’
  • 缩写格式: :元素的属性名=‘xxxx’
  • 作用:将数据动态绑定到指定的元素上
  • 案例源码
    在这里插入图片描述
  • 效果图
    在这里插入图片描述

2.4.5 事件绑定指令 v-on

  • 完整格式: v-on:事件名称=“事件处理函数名”
  • 缩写格式: @事件名称=“事件处理函数名” 注意: @ 后面没有冒号
  • 作用:用于监听 DOM 事件
  • 案例源码: 每点击1次,数据就加1
    在这里插入图片描述在这里插入图片描述
  • 效果图
    在这里插入图片描述

2.5 计算属性和监听器

2.5.1 计算属性 computed

  • computed 选项定义计算属性

  • 计算属性 类似于 methods 选项中定义的函数
    计算属性 会进行缓存,只在相关响应式依赖发生改变时它们才会重新求值。
    函数 每次都会执行函数体进行计算。

  • 需求:输入数学与英语分数,采用 methods 与 computed 分别计算出总得分

  • 案例源码
    在这里插入图片描述computed 选项内的计算属性默认是 getter 函数,所以上面只支持单向绑定,当修改数学和英语的数据才会更新总分,而修改总分不会更新数据和英语

2.5.2 计算属性(双向绑定)

  • 计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter
  • 案例源码:
    在这里插入图片描述在这里插入图片描述

2.5.3 监听器 watch

  • 当属性数据发生变化时,对应属性的回调函数会自动调用, 在函数内部进行计算

  • 通过 watch 选项 或者 vm 实例的 $watch() 来监听指定的属性

  • 需求:

  • 通过 watch 选项 监听数学分数, 当数学更新后回调函数中重新计算总分sumScore3

  • 通过 vm.$watch() 选项 监听英语分数,当英语更新后回调函数中重新计算总分sumScore3

  • 源码实现:
    注意: 在data 选择中添加一个 sumScore3 属性
    在这里插入图片描述

2.6 Class 与 Style 绑定 v-bind

通过 class 列表和 style 指定样式是数据绑定的一个常见需求。它们都是元素的属性,都用 v-bind 处理,其中表达式结果的类型可以是:字符串、对象或数组。

2.6.1 语法格式

  • v-bind:class=‘表达式’ 或 :class=‘表达式’
    class 的表达式可以为:
    字符串 :class=“activeClass”
    对象 :class="{active: isActive, error: hasError}"
    数组 :class="[‘active’, ‘error’]" 注意要加上单引号,不然是获取data中的值
  • v-bind:style=‘表达式’ 或 :style=‘表达式’`
    style 的表达式一般为对象
    :style="{color: activeColor, fontSize: fontSize + ‘px’}"
    注意:对象中的value值 activeColor 和 fontSize 是data中的属性

2.6.2 案例源码

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 效果图
    在这里插入图片描述

2.7 条件渲染 v-if

2.7.1 条件指令

  • v-if 是否渲染当前元素
  • v-else
  • v-else-if
  • v-show 与 v-if 类似,只是元素始终会被渲染并保留在 DOM 中,只是简单切换元素的 CSS 属性 display 来显示或隐藏

2.7.2 案例源码

  • 源码实现
    在这里插入图片描述
  • 效果图
    在这里插入图片描述

2.7.3 v-if 与 v-show 比较

  1. 什么时候元素被渲染
    v-if 如果在初始条件为假,则什么也不做,每当条件为真时,都会重新渲染条件元素
    v-show 不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换
  2. 使用场景选择
    v-if 有更高的切换开销
    v-show 有更高的初始渲染开销
    因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行后条件很少改变,则使用 v-if 较好

2.8 列表渲染 v-for

2.8.1 列表渲染指令

  1. v-for 迭代数组
    语法: v-for="(alias, index) in array"
    说明: alias : 数组元素迭代的别名; index : 数组索引值从0开始(可选)
    举例
    在这里插入图片描述items 是源数据数组, item 是数组元素迭代的别名。
    注意:使用 key 特殊属性, 它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素

  2. v-for 迭代对象的属性
    语法: v-for="(value, key, index) in Object"
    说明: value : 每个对象的属性值; key : 属性名(可选); index : 索引值(可选)
    举例:
    在这里插入图片描述注意: 在遍历对象时,是按 Object.keys() 的结果遍历,但不能保证它的结果在不同的 JavaScript 引擎下是顺序一致的。

  3. 可用 of 替代 in 作为分隔符

2.8.2 案例源码

  • 源码实现
    在这里插入图片描述在这里插入图片描述

2.9 事件处理 v-on

2.9.1 事件处理方法

  • 完整格式: v-on:事件名=“函数名” 或 v-on:事件名=“函数名(参数……)”

  • 缩写格式: @事件名=“函数名” 或 @事件名=“函数名(参数……)” 注意: @ 后面没有冒号

  • event :函数中的默认形参,代表原生 DOM 事件
    当调用的函数,有多个参数传入时,需要使用原生DOM事件,则通过 $event 作为实参传入

  • 作用:用于监听 DOM 事件

  • 案例源码
    在这里插入图片描述在这里插入图片描述

2.9.2 事件修饰符

  • .stop 阻止单击事件继续传播 event.stopPropagation()
  • .prevent 阻止事件默认行为 event.preventDefault()
  • .once 点击事件将只会触发一次
    在这里插入图片描述
    在这里插入图片描述

2.9.3 按键修饰符

  • 格式: v-on:keyup.按键名 或 @keyup.按键名
  • 常用按键名:
    .enter
    .tab
    .delete (捕获“删除”和“退格”键)
    .esc
    .space
    .up
    .down
    .left
    .right
  • 源码实现
    在这里插入图片描述在这里插入图片描述

2.10 表单数据双向绑定v-model

  • 单向绑定:数据变,视图变;视图变(浏览器控制台上更新html),数据不变;上面的都是单向绑定
  • 双向绑定:数据变,视图变;视图变(在输入框更新),数据变;

2.10.1 基础用法

v-model 指令用于表单数据双向绑定,针对以下类型:

  • text文本
  • textarea多行文本
  • radio单选按钮
  • checkbox 复选框
  • select 下拉框

2.10.2 案例源码

在这里插入图片描述在这里插入图片描述

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

第二章 Vue 核心技术 的相关文章

  • 使用 AngularJs NgResource 从本地主机加载 JSON 文件

    Overview 我正在构建一个应用程序 在 MAMP 上运行 该应用程序包含联系信息 一旦该部分正常运行 该应用程序将扩展以包含更多数据 例如项目名称和截止日期 问题 当用户访问时 projects php project 我希望他们看到
  • Analytics.js:“auto”参数在跟踪对象创建方面有何作用?

    我刚刚切换到新的 Google Analytics 分析 通用分析 https support google com analytics answer 2790010 hl en GB平台 使用新的 javascript API 分析 js
  • 如何使用Vue3中的ref访问父组件中的子组件方法?

    我正在尝试使用 vue3 和 ref 方法访问父组件中的子方法 但它返回一个错误 未捕获的类型错误 addNewPaper value savePaper 不是函数 下面是我的代码 请指导我哪里错了 子组件
  • 固定长度的随机数

    我想生成一个 0 9 数字且长度 5 的随机整数 我尝试这样做 function genRand min max for var i 1 i lt 5 i var range max min 1 return Math floor Math
  • 单击 DIV 时滚动到顶部? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • javascript Array.prototype.push 如何连接

    我已经看到数组的 push 方法用于替换串联 但我不完全确定它是如何工作的 var a 1 2 3 var b 4 5 6 Array prototype push apply a b 它如何就地连接而不是返回一个新数组 apply htt
  • 单击链接时如何将另一个 JSP 页面注入到

    我在一个JSP页面中有两个不同的部分 其中一个包含链接菜单 单击时 div2 id content 会相应加载不同的页面 我正在做类似的事情 div ul class navbar li a href Login jsp Login a l
  • Javascript If 语句的语义是什么

    我一直认为 if 语句本质上比较它的论点类似于 true 然而 Firebug 中的以下实验证实了我最担心的事情 在编写 Javascript 15 年之后 我仍然不知道 WTF 发生了什么 gt gt gt true false gt g
  • 解密签名并验证 JWT

    我知道还有其他库可以让我更轻松地使用 JWT 在 Node js 中 在本例中 我使用 crypto js 以手动方式学习 JWT 以下给了我令牌 var header alg HS256 typ JWT var wordArrayHead
  • 跳过测试文件 Jest 中的一项测试

    我正在使用 Jest 框架并有一个测试套件 我想关闭 跳过其中一项测试 谷歌搜索文档没有给我答案 您知道答案或需要检查的信息来源吗 我在这里找到了答案 https devhints io jest https devhints io jes
  • 使用 javascript/jquery 检查 .css 样式表的名称

    我正在尝试为论坛制作一个小 chrome 扩展 但我只希望它在论坛的某个区域中工作 问题是我不能只做 matches subforum 因为该论坛中的线程无法通过 URL 区分它们所在的子论坛 subforum 有自己的 css 样式表 所
  • 使用 Firefox 插件发出跨域 ajax 请求

    我对如何在 Firefox 插件中发出跨域 ajax 请求感到有点困惑 LastPass 和 Xmarks 等插件建议你可以做到这一点 但是当我尝试用 google 搜索你是如何做到这一点时 每个人似乎都说你不能 除非用户在 Firefox
  • 在 Node.js 中封装 require 可以解决相对路径调用

    我正在尝试创建一个 require 包装器来加载依赖项 但我发现很难让它像原始的 require 函数一样工作 当路径是相对路径时 包装器无法解析为正确的路径 因为我的加载程序和调用程序文件不在同一文件夹中 这是一个简化的描述 index
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • 使用 Javascript 编辑和保存用户 HTML - 安全性如何?

    例如我有一个Javascript 支持的表单创建工具 您可以使用链接添加元素的 html 块 如输入字段 并使用 TinyMCE 来编辑文本 这些是通过自动保存功能保存的 该功能在特定事件的后台执行 AJAX 调用 被调用的保存函数负责数据
  • javascript:新日期,缺少年份

    我打电话给 new Date Jan 4 发现默认年份是2001年 a new Date Jan 4 Thu Jan 04 2001 00 00 00 GMT 0500 EST 有什么办法可以将默认年份设置为 2011 年吗 更新 我知道我
  • Origin 无权使用地理定位服务 - 即使通过 HTTPS

    我有一个通过 HTTPS 使用 HTML5 地理定位的网页 它在桌面浏览器上运行良好 然而 在 iOS Safari 上 我收到错误 Origin 无权使用地理定位服务 我已确保页面上的所有内容都通过 HTTPS 加载 每个图像 每个脚本和
  • Javascript this 关键字 - 函数内部

    我正在尝试理解this关键字JavaScript 我在 chrome 控制台上做了一些测试 发现了两个不同的结果 但我期望它们是相同的 var myTest myTest test1 function return this this Ob
  • 获取类的公共属性而不创建它的实例?

    假设我们有一个 JavaScript 类 var Person function function Person name surname this name name this surname surname Person prototy
  • axios在自调用函数内部只调用一次(Internet Explorer)

    我有一个函数每 2 5 秒调用自己一次来检查后台运行的任务 它调用 axiosget如果响应错误 则返回一个 url 如果响应成功 我将停止该函数 这在 Chrome 和 Mozilla 上完美运行 但由于某种原因 它在 IE 版本 11

随机推荐

  • ArcPy操作shp格式文件

    目录 ArcPy操作shp格式文件 shp文件介绍 创建shp 编辑shp 编辑列 字段 插入列 编辑行 记录 主要涉及的对象 arcpy Cursor 游标 对象 arcpy Row对象 arcpy Array对象 插入行 删除行 更新行
  • java中double转String如何去掉整数结尾的小数位“.0“

    可以使用Java中的DecimalFormat类 设置格式化模式来实现将double转为String 去掉整数结尾的小数位 0 以下是示例代码 double d 1234 0 DecimalFormat df new DecimalForm
  • linux 新建用户、用户组 以及为新用户分配权限

    一 Linux系统用户账号的管理 用户账号的管理工作主要涉及到用户账号的添加 修改和删除 添加用户账号就是在系统中创建一个新账号 然后为新账号分配用户号 用户组 主目录和登录Shell等资源 刚添加的账号是被锁定的 无法使用 1 添加新的用
  • C++性能优化系列——矩阵转置(八)IPP转置API性能测试

    本篇记录Intel 高性能计算函数库IPP中的转置函数ippiTranspose 8u C1R的执行情况 方便性能优化系列篇中转置实现做性能对比 函数说明 解释来自IPP2018发布文档 Intel Integrated Performan
  • Linux报错:-bash: 路径xx: No such file or directory解决方法

    为什么80 的码农都做不了架构师 gt gt gt 问题 出现这个错误 bash 路径xx No such file or directory除了cd能用外 所有linux命令都不能用 一般导致问题原因是etc profile配置文件出错导
  • 有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法一)

    国家太空安全是国家安全在空间领域的表现 随着太空技术在政治 经济 军事 文化等各个领域的应用不断增加 太空已经成为国家赖以生存与发展的命脉之一 凝聚着巨大的国家利益 太空安全的重要性日益凸显 1 而在信息化时代 太空安全与信息安全紧密地结合
  • 【linux学习记笔】以war包安装部署Jenkins

    Jenkins的安装方法很多 这篇文章记录了个人学习使用war方式安装方式 一 安装准备 安装之前要先配置好JDK 配置方法在这里就不详细说明了 二 进入Jenkins官网下载war包 Jenkins官网 https www jenkins
  • 使用百度地图API出错

    在使用百度地图API做地理定位的时候 从拾取坐标系系统获取的坐标 其经纬度是反的 所以直接复制过去的时候 显示不出来地图的全景图 使用时记得交换位置
  • c#用Gnuplot画图源码

    直接调用这个类即可 需要下载个GnuPlot安装下 Author Leonardo Tazzini using System using System Diagnostics using System Drawing using Syste
  • Python爬虫学了几个月却不敢接单?过来人的经验总结收好!

    前几天有刷到一个提问 爬虫学了几个月了却还是不敢上手去接单 爬虫接单靠不靠谱 有些新手心里会犯嘀咕 怕不小心就踩了红线 作为过来人也接过不少单 来浅聊一下我的经验 这篇所说的经验总结可能更适合爬虫新手 爬虫大佬可以忽略 此篇小结 Pytho
  • MHA高可用配置和故障切换

    目录 引言 一 MySQL四种同步方式 1 1 异步复制 Async Replication 1 2 同步复制 Sync Replication 1 3 半同步复制 Semi Sync Replication 1 4 增强半同步复制 los
  • 锂电池保护板电路分析

    锂电池保护板基本模型如下 P 和P 接到负载以及充电电路 T接到充电电路的NTC R1 基准供电电阻 C1 起瞬间稳压和滤波作用 R2 过流 短路检测 R3 NTC电阻 1 当电路正常工作的的时候CO DO都是高电平 U2的两个NMOS导通
  • QT超市管理系统

    QT超市管理系统 前言 QT介绍 pro文件 主文件 main函数 窗口函数 mainwindow 用户登录 user login 超市系统数据库 maketsql 超市商品的增删改查 dlg addmak 收款码界面 picture 结语
  • SpringBoot中Server层以及Mapper层常用注解

    最近看了一下SpringBoot2的课程 发现好多的注解并不是很了解 只是简单的会用 但是真是发生的作用却不知道 最近花了一些时间把这些注解进行了一下整理 针对不同的层级进行了细致的划分 最近几天会依次给大家更新关于注解的内容 对大家有帮助
  • 大带宽、高速率接口对比---USB、PCIE、SATA、HDMI和以太网等接口

    一 PCIE接口 二 USB接口 三 SATA接口 SATA 编码方式 原始频宽 传输速率 有效速率 排线最长长度 SATA1 0 SATA2 0 8bit 10bit 3Gb s 300MB s 275MB s 1M SATA3 0 8b
  • VMware Workstation 15 语言修改

    VMware Workstation 15 语言修改 Win10系统之前因为2345 Flash的原因 把系统的地区改成了中国以外的地区 后来发现不仅Flash的问题没解决 VMware虚拟机的中文界面显示也变成了英文 之后在论坛里看到一个
  • win10如何把繁体字改成简体字

    win10如何把繁体字改成简体字 WBOY 发布 2023 07 09 13 17 05 转载 3431人浏览过 win10客户在开展文字输入的时候遇到了字体变为繁体字的状况 那么如何把繁体字改成简体字呢 是否有快捷键呢 win10繁体字改
  • Elasticsearch 相关度评分算法

    Elasticsearch 相关度评分算法 一 相关度评分算法的组成 1 1 boolean model 1 2 TF IDF 1 3 Vector space model 二 Lucene中的相关度分数算法 三 优化相关度分数计算的方式
  • QT设置控件颜色

    转自 http hi baidu com xiaofan812 item 9a039d62849fa22268105b11 一般的属于QWidget子类的一些控件 可以直接使用样式表 例如 label gt setStyleSheet co
  • 第二章 Vue 核心技术

    2 1 Vue 入门开发 2 1 1 创建工程 在本地创建文件夹D Project vue WebStudy 打开 VS Code 点击 File gt Open Folder 找到 D Project vue WebStudy 打开 单击