Vue第二篇:概念深度剖析

2023-11-08

参考链接:https://www.bilibili.com/video/BV1oj411D7jk/?spm_id_from=333.788.recommend_more_video.0&vd_source=3969f30b089463e19db0cc5e8fe4583a

1、响应式数据与插值表达式理解
前端最基本的操作是:把数据呈现到页面上,把更新的数据再更新到页面上。
原生js的赋值操作如下:
<div id="box"></div>
<script>
let value = '这是内容'
document.getElementById('box').textContent = value
value = '新内容'
document.getElementById('box').textContent = value
</script>
以上DOM操作过于繁琐,Vue通过内置代码的方式将DOM功能进行了简化。
所谓的响应式数据指的是:Vue内部对数据做操作,它就会自动地更新到视图中,这样就可以省去大量的DOM操作。
上面的内容简化后为:
<div id="box">{{ title }}</div>
<script>
    const vm = new Vue({
        el: '#box',
        data(){
            return {
                title: '这是标题内容'
            }
        }
    })
</script>
后续针对title的修改会直接体现在页面上。

2、计算属性computed
methods中的函数,假如每次计算时依赖的值不变,则结果也不会发生变化,此时就不要重复计算,这样就存在优化空间。于是就产生了computed。
计算属性在定义时时一个函数,但是在使用时不能加括号,因为它是一个属性。

3、侦听器watch
在插值表达式和计算属性中,改数据的时候就会自动触发一个修改页面内容的操作。
监听器就是监听某个数据是否有变化,我们希望在数据变化的时候不仅仅是更新页面,还希望做点别的。
侦听器的意义:在插值表达式和计算属性时修改一个响应数据,它会做页面的更新,这是Vue内部自动实现的。如果也希望在过程中去参与一下,就可以通过监听器做一个处理。这是Vue在内部给我们开放了一个可以参与响应式的一个过程。
watch:{
    title(newValue, oldValue){
        console.log(newValue, oldValue)
    }
}

4、指令
(1)内容指令
<p v-text="title">123</p>
<p v-html="htmlContent">123</p>
(2)渲染指令
<p v-for="item in 5">这是内容</p>

当在组件中使用v-for时,key是必须的。作用是为了高效地更新虚拟DOM。


<p v-if="true">标签内容</p>
<p v-show="true">标签内容</p>
(3)属性指令
<p v-bind:title="title">这是内容</p>
等价于<p :title="title">这是内容</p>
(4)事件指令
<button v-on:click="output">按钮</button>
等价于<button @click="output">按钮</button>
(5)表单双向绑定指令
<input type="text" v-model="inputValue">

5、Vue CLI说明
它时Vue基于Webpack打造的脚手架工具,脚手架内置了很多模板和工具,可以让我们快速进行Vue的项目创建。
查看vue版本:vue --version
创建vue项目:vue create <project-name>

6、脚手架的项目结构
(1)package.json
在scripts中有serve/build/lint的命令。

serve命令:可以帮我们打开本地的静态资源服务器,帮我们把项目直接跑起来,方便我们在开发中去使用。启动方式为:npm run serve,然后通过localhost:8080访问页面。

build命令:进行代码打包,在开发时项目中有很多文件,但是最终呈现给用户的时候不会存在很多零碎的文件。打包命令:npm run build。打包完成后会出现dist目录,其中都是压缩过的html的代码,后面项目上线时也需要dist文件即可。此时启动打包后的服务的方法:先运行npm install serve -g,然后在项目目录下运行serve dist,最后通过localhost:3000可以访问页面
(2)node_modules:
包含项目安装的所有的包,这个代码都是一些第三方的工具,不需要改动。
(3)public
这些是不参与编译的资源
(4)src
里面是需要参与编译的资源。
比如assets中的logo.png需要编译成base64格式进行展示。
App.vue:根组件。
main.js:Vue应用的一个入口文件。

7、组件化开发
vue中包含结构template、逻辑script、样式style 三个部分。
每个vue都是单独的实例,最终会在编译环节进行一下结构生成,并替换掉之前写的自定义的HTML标签。
el选项只能在根组件中使用,而内部的子组件是不需要el选项的,因为这取决于标签的位置,而不是挂载在特定的标签上。

props父传子通信:一个或多个属性的配置
props:{
    msg: String,
    count: {
        type: [String, Number],
        default: 100,
        required: true
    }
}

父组件绑定数据的方法
<HelloWorld 
    msg="Welcome"
    :count="parentCount"
/>

export default{
    name: 'App',
    components:{
        HelloWorld
    },
    data(){
        return{
            parentCount: 1000
        }
    }
}

插槽:父组件应用子组件的内容中也可以写些信息,这样设置时比通过prop的方式传值更简单,同时可以传递更加复杂的结构比如HTML页面。即组件有一部分区域是开放的,这样自己可以随便定一些东西进去,而不再是完全由子组件内部做实现,使用起来更自由一些。

8、单页面应用程序
常规网站都是由多个页面组成的,每个页面去构建一些页面相关的一个功能内容。
而Vue只有一个html文件,也意味着它其实只有一个页面。
如何在一个页面中实现多页面应用的效果,其实就是检测页面URL的变化,当URL变化后在页面中渲染一些内容就可以了,这就是单页面应用程序。

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

Vue第二篇:概念深度剖析 的相关文章

  • 未捕获的ReferenceError:google未定义(索引):21初始化(Google Maps API)

    继续在控制台中收到此错误 Uncaught ReferenceError google is not Defined 已经做了一段时间了 但没有运气 非常感谢任何帮助 提前致谢
  • 资产管道中的路由助手

    使用 Rails 3 1 0 rc4 我尝试访问 javascript 文件中的路由助手 本例中为 event js erb 但似乎此时它们尚未加载 当请求合并的 assets application js 文件时 我得到 throw Er
  • 如何检测我正在 eval() 调用中?

    是否存在字符串s这样 new Function s and eval s 表现不同 我正在尝试 检测 字符串的评估方式 检查是否有arguments目的 如果它存在 那么您就在该函数中 如果没有 那就已经是evaled 请注意 您必须将支票
  • 首选的客户端路由解决方案? [关闭]

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

    我对 Jquery 很陌生 希望你们能帮助我解决这个 jquery 验证问题 一直在尝试验证表单 但它根本没有验证 它接受我在字段中输入的任何内容 无论我设置什么限制 请帮忙 谢谢 这是我的代码
  • LitElement 不更新列表中的复选框

    我有一个简单的清单 每个项目都有一个删除按钮 当我选中第一个项目然后删除它时 列表会更新 删除该项目 但会选中下一个项目的复选框 下一项的属性是正确的 这是我的代码 import LitElement html from lit eleme
  • 如何使用 JavaScript 访问 runat="server" ASP 元素?

    似乎每个人都在这样做 在代码帖子等中 但我不知道如何 每当我尝试使用 JavaScript 操作 asp 元素时 我都会得到一个 element is null or document is undefined 等等错误 JavaScrip
  • req.body 为空 Express js

    我花了几个小时试图找出为什么 req body 是空的 我在 stackoverflow 上到处查看并尝试了所有方法 但没有运气 Express js POST req body 空 https stackoverflow com ques
  • 找出 Jquery ajax 请求被重定向到的位置

    所以 我收到了这个ajax请求 请参阅 金发女郎 大约6英尺高 看起来像这样 ajax url http example com makeThing dataType html type POST data something someot
  • 是否有管理 __utma、__utmz 等 cookie 的标准?

    无论我登录 Facebook 还是 Twitter 我都会受到以下名称的 cookie 轰炸 utma utmb utmc utmv 它们的功能是什么 是否有一个标准来管理这些在服务器端的使用方式 这些 cookie 通常与谷歌分析 htt
  • 如何跨页面播放背景音乐

    我已经读过这个问题 我知道它只能用框架来完成 我真的不想要全站点 AJAX 如何在多个 HTML 页面上播放背景音频 https stackoverflow com questions 4210370 how to play a backg
  • React 和 ES6 继承

    Note 这篇文章是在 React 不支持 ES6 v12 时发布的 我有一个 ES6 课程 class BaseClass getInitialState return message Hello render return div di
  • 如何检查 Node.js 中是否定义了变量?

    我正在用node js 编写一个程序 它实际上是js 我有一个变量 var query azure TableQuery 看起来这行代码有时没有执行 我的问题是 我怎样才能做到这样的条件 if this variable is define
  • 为什么闭包编译器不缩短这个?

    我不确定这只是一个错误还是一个预期的功能 基本上 我有这个微小的功能 我现在看到end这里是蓝色的 但这工作得很好 如果我将其重命名为其他名称 我仍然遇到问题 function f a b var start Math min a b va
  • 如何确定特定时间是否在javascript中给定时间范围之间

    我想检查两个时间 var open time 和 var close time 之间的 var check val var open time 23 30 var close time 06 30 var check val 02 30 i
  • 使用 JS 从列表中删除最近的 元素的 URL

    所以我有一个网址列表 并且有删除按钮 图像按钮 当点击删除按钮时 按钮旁边的 url 必须从列表中删除 let list const remove document getElementById remove const view docu
  • 你可以推荐什么 JavaScript 缓存 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的javascript内存缓存库来缓存客户端计算结果 我的要求 适用于 Internet Explorer FireFox
  • 矩形描边上的单击事件

    我想仅在矩形的笔划上添加单击事件 并避免在矩形内部单击 下面是代码 var stage new Kinetic Stage container container width 578 height 200 var layer new Kin
  • 无法使用Vue获取灵活元素的CSS属性值

    我正在尝试获取 CSSwidth灵活元素的属性 但由于某种原因它不起作用 代码笔 https codepen io anon pen pLEwdp editors 1010 https codepen io anon pen pLEwdp
  • 如何将react-native与php一起使用并获取返回数据始终为空

    我的回报始终为空 我似乎无法让它发挥作用 我如何将react native与php一起使用并获取json 任何人都可以帮忙吗 PHP myArray array myArray lat POST lat myArray lng POST l

随机推荐

  • ps景观平面图转鸟瞰图_ps如何制作鸟瞰图 ps制作鸟瞰图教程

    ps如何制作鸟瞰图 大家都知道ps是一款强大的制图绘图工具 而在我们制作规划图的时候 鸟瞰图是最好的展示图 那么ps就派上用场了 使用ps制作的鸟瞰图可以杜绝凭空想象的随意性 让整个图变得更加的精确 那么下面我们就一起来看看吧 1 拿相机拍
  • 正则 去掉括号内的内容

    前言 刚开始以为 就是括号内任意字符了 试了不行 错误点 1 括号需要转移 是正则表达式关键字 2 不是任意字符 而是 除了右括号的任意字符 String content i want to thank you thank very dfl
  • 嵌入式Linux人脸检测libfacedetection

    人脸检测 此库依赖Opencv 所以首先要移植Opencv到板子上 笔者使用LVGL搭建了一个界面 界面有些卡顿 主要原因是文件存取较慢 演示效果如下 OpenCV 首先要交叉编译Opencv 参考 https blog csdn net
  • 统计学——简单理解方差分析

    方差分析 方差分析 analysis of variance 简写为ANOVA 指的是利用对多个样本的方差的分析 得出总体均值是否相等的判定 它是一种分析调查或试验结果是否有差异的统计分析方法 也就是检验各组别间是否有差异 方差分析按照以下
  • linux 网卡队列深度,linux 磁盘队列深度nr_requests 和 queue_depth

    nr requests 和 queue depth 修改配置值 nr requests 和 queue depth 区别 iostat 的avgqu sz lsscsi l 的队列大小 iostat nr requests 和 queue
  • MOEA/D 算法详解

    MOEA D 笔记 1 聚合方法 1 1 权重求和法 Weighted Sum Approach 1 2 切比雪夫聚合法 Tchebycheff Approach 1 3 边界交叉法 Boundary Intersection Approa
  • JS:MessageChannel

    MessageChannel API MessageChannel 为通信管道对象 使用 MessageChannel 构造函数将返回一个 MessageChannel 对象 返回的对象中包含两个 MessagePort 对象 可以实现双端
  • 关于numpy中seed随机数种子的使用

    numpy random seed 随机种子生成器 使下一次生成的随机数为由种子数决定的 特定 的随机数 如果seed中参数为空 则生成的随机数 完全 随机 gt gt gt import numpy as np gt gt gt np r
  • 电脑查询域名对应IP的过程

    1 浏览器缓存 当用户通过浏览器访问某域名时 浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址 若曾经访问过该域名且没有清空缓存 便存在 2 系统缓存 当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是
  • 4键电子手表说明书_电子手表怎么调(电子手表的四个键的功能各是什么)

    展开全部 四个功能键分别是 左上角按键e68a84e8a2ad62616964757a686964616f31333433643062LIGHT 右上角按键ST SP 左下角按键MODE 右下角按键RESET 具体操作步骤如下 1 首先 在
  • (干货)微信小程序组件封装

    概述 自己封装的一个比较简单微信弹窗小组件 主要就是教会大家对微信小组件的用法和理解 因为微信小程序对组件介绍特别少 所以我就把自己的理解分享给大家 一前言 相信大家在开发小程序时会遇到某个功能多次使用的情况 比如弹出框 这个时候大家首先想
  • 自动化测试之RobotFramework框架

    自动化测试之RobotFramework框架 很久没更新 因为我跳槽了 之前学习了入门级别性能测试的Jmeter 发现自由度真的差 又想着找一个上限比较高的python测开的工作 所以换到了现在的工作 我们公司使用的是wxpython基于r
  • 学习日记——基于MDK的智慧物流案例开发(2020.2.19)

    准备阶段 开发板 小熊派开发板 提前组装 将 NB卡 NB35 A通信扩展板 E53 ST1GPS模块 IDE LiteOS Stiudio 小熊派的编译环境 平台 华为云账号 开通开发中心的权限 若使用软件开发服务进行应用开发 还需要开通
  • QT drawPixmap和drawImage处理图片模糊问题

    drawPixmap和drawImage显示图片时 如果图片存在缩放时 会出现模糊现象 例如将一个100x100 的图片显示到30x30的区域 这个时候就会出现模糊 如下 实际图片 这个问题就是大图显示成小图造成的像素失真 当我们在1080
  • ctf.show_web12

    f12提示 传参 cmd hightlight file index php 得到源码
  • 【抽五分钟】使用VuePress创建在线文档中心

    文章目录 安装初始化 核心配置 导航栏配置 侧边栏配置 静态资源配置 nginx部署 typora编写 安装初始化 全局安装 npm install g vuepress 创建目录 mkdir vurepress blog 项目初始化 cd
  • 使用 pair 做 unordered_map 的键值

    背景 标准库中 unordered map 是使用哈希表实现的 对于内置类型标准库通过 std hash 提供了哈希函数的实现 因此若采用非内置类型做键值 则需要程序员自己提供其哈希函数的实现 用 pair 做键值 自定义哈希函数 stru
  • Spring-Boot-Admin--快速学习--按应用实例添加标签--08

    代码地址 https gitee com DanShenGuiZu learnDemo tree master springboot admin learn 一 按应用实例添加标签 Tags 是我们区别同一应用的不同实例的方法 1 1 举例
  • 如何用电路区分 OC门与TTL

    这是两个概念 oc门是输出驱动方式 指集电极开路驱动 在电路中如果输出有一个电源到输出端的上拉电阻通常就是OC门 OC门只能灌电流 你说的TTL可能是指没注明的图腾拄驱动 即用不同极性的两个管子推拉驱动 不需要外接电源 高电平时可给负载提供
  • Vue第二篇:概念深度剖析

    参考链接 https www bilibili com video BV1oj411D7jk spm id from 333 788 recommend more video 0 vd source 3969f30b089463e19db0