vue学习——第二弹(代码片段)

沃和莱特 沃和莱特     2023-04-11     733

关键词:

前言

上一篇文章 Vue学习——【第一弹】 中我们学习了Vue的相关特点及语法,这篇文章接着通过浏览器中的Vue开发者工具扩展来进一步了解Vue的相关工作机制。

Vue的扩展

我们打开Vue的官方文档,点击导航栏中的生态系统,点击Devtools

接着我们就进入了github中,点击右栏的链接:

之后跳转到一个新的页面,点击install now


然后就能看到多种浏览器分别对应的Vue扩展,根据自己的需要做出选择:

国内的伙伴可能无法打开谷歌浏览器的扩展,需要在谷歌浏览器安装Vue扩展的伙伴可以自取:

点击链接
提取码:vart

我们只需要打开谷歌浏览器的设置中的扩展程序,然后打开右上角的开发者模式,将文件夹中的 .crx 拖拽过去即可。

Vue的数据绑定

这里介绍下 v-bind(单向数据绑定)v-model(双向数据绑定)

v-bind

v-bind是Vue中的指令之一,用于将数据绑定到元素属性上。

v-bind的主要作用是动态地设置HTML元素的属性,并与Vue实例的数据绑定起来。通过v-bind指令,我们可以将Vue实例中的数据动态地绑定到HTML元素的属性上。这样,当Vue实例中的数据发生变化时,对应的HTML元素属性也会自动更新。

<div id="demo1">
        <!-- 这是第一种写法 -->
        这是单向数据绑定 v-bind <input type="text" v-bind:value="name"><br />
        <!-- 这是简写写法 -->
        这是单向数据绑定 v-bind的简写 <input type="text" :value="index.name">
    </div>
    <script type="text/javascript" src="../JS/vue.js"></script>
    <script type="text/javascript">
        new Vue(
            el: '#demo1',
            data: 
                name: 'hello Vue',
                index: 
                    name: '你好 Vue'
                
            
        )

    </script>

但是为什么说v-bind是单向数据绑定呢?我们通过浏览器上的Vue扩展来看一下。
运行我们写好的html文件,然后在浏览器页面上右击检查,然后点击vue:


尝试一下修改data中的name或者是index中的name的值

我们看一下对应的数据是否发生改变:

我们看到当Vue实例中的数据发生变化时,对应的HTML元素属性也会自动更新。
如果是我们更改文本框中的内容,Vue实例中对应的数据也会自动发生变化吗?


从这两个例子呈现的结果我们也可以看出 :使用单向绑定时,数据只能从data流向页面,但是无法从页面流向data(只有data–>DOM,没有DOM–>data

在上一篇文章中还介绍了Vue中的插值语法,其实插值语法也属于单向绑定,它可以将数据从组件的JavaScript实例绑定到视图中,但不能将视图中的值绑定回JavaScript实例。

同样是举例说明:

修改之前
修改之后:


关于插值语法为什么是单向数据绑定,其实也很容易理解:因为这样就可以保证组件的数据状态只能在组件内部被修改,避免了数据污染和不可预测性的问题。而如果需要实现双向数据绑定,可以使用v-model指令

v-model

v-model是Vue中的双向数据绑定指令,Vue中的双向数据绑定是指在View层(即用户界面)中输入的数据可以自动同步到Model层中的数据,同时Model层中数据的变化也可以自动同步到View层中。这种实时的数据同步,让Vue的开发变得更加简单和高效。

举例:

<div id="demo2">
        这是双向数据绑定  v-model <input type="text" v-model:value="name"><br/>
        这是双向数据绑定v-model的简写 <input type="text" v-model="index.name">
    </div>
    <script type="text/javascript" src="../JS/vue.js"></script>
    <script type="text/javascript">
        new Vue(
            el:'#demo2',
            data:
                name:'这是个文本框',
                index:
                    name:'这也是个文本框'
                
            
        )
    </script>

效果:


修改data中的数据:

修改DOM中文本框的内容:

通过这两个例子我们应该很直观的看到了v-model的双向数据绑定:
既可以实现从data流向DOM,也可以从DOM流向data(data——>DOM DOM——>data)

但是当我们使用v-model进行双向数据绑定时,需要注意:

v-model只可应用于表单元素(即具有value值得元素)中,否则会报错

小结

通过上述案例,我们看到双向数据绑定似乎更高效一些,那么为什么单向数据绑定还在使用呢?
Vue中的双向数据绑定固然更加高效,因为它能够同时更新组件和数据模型中的数据。然而,在一些特定情况下,单向数据绑定也有它的优势

首先,单向数据绑定在某些场景下会更易于理解和维护。
其次,单向数据绑定可以在性能和内存方面更高效。
最后,单向数据绑定更加适合与其他框架或库进行集成。

因此,选择使用单向还是双向数据绑定取决于特定的应用场景和要解决的问题。在某些情况下,使用单向数据绑定反而会更加有效。

最后

以上就是本篇文章介绍的内容了,后续还会有学习分享,经验总结。
初学乍道,如有不足,欢迎指正!

参考文献

Vue官方文档
Vue技能树
B站视频讲解

数据库学习笔记第二弹——mysql的登陆与使用(图文详解2022)(代码片段)

数据库学习笔记第二弹——MySQL的登陆与使用(图文详解2022)文章目录数据库学习笔记第二弹——MySQL的登陆与使用(图文详解2022)1.MySQL的登录1.1服务的启动与停止1.1.1途径1:使用图形界面工具1.1.2途径2:... 查看详情

深入理解threadpoolexecutor第二弹(代码片段)

从源头解析ThreadPoolExecutor第二弹—ThreadPoolExecutor的内部类ThreadPoolExecutor主要包括如下内部类:其中AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy、DiscardPolicy表示任务的拒绝策略,当线程池的线程数量达到最大值并且阻塞队列已... 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

codeforces620enewyeartree(线段树的骚操作第二弹)(代码片段)

TheNewYearholidaysareover,butReshadoesn‘twanttothrowawaytheNewYeartree.HeinvitedhisbestfriendsKerimandGuraltohelphimtoredecoratetheNewYeartree.TheNewYeartreeisanundirectedtreewith n vertices 查看详情

分享几个实用的代码片段(第二弹)

大家好,我是杂烩君。本次我们再来分享几个实用的代码小片段。快速获取结构体成员大小获取结构体成员大小及偏移量的方式有多种。最简便的方式:代码:左右滑动查看全部代码>>>// 微信公众号:嵌入... 查看详情

分享几个实用的代码片段(第二弹)

大家好,我是杂烩君。本次我们再来分享几个实用的代码小片段。快速获取结构体成员大小获取结构体成员大小及偏移量的方式有多种。最简便的方式:代码:左右滑动查看全部代码>>>// 微信公众号:嵌入... 查看详情

compose跨平台第二弹:体验composeforweb(代码片段)

...ompose-jb以及如何使用Compose-jb开发简单的桌面端应用,第二弹,我们就来了解下如何使用Compose-jb开发Web应用。相信看完这一弹之后你会对Compose-jb有新的了解。环境要求与ComposeForDesktop的环境要求一致 查看详情

cookbook学习第二弹

1.5怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素带有双下划线的方法,会在需要被调用的位置自动被调用带有单下划线的变量是私有变量 下面利用类heapq模块实现一个简... 查看详情

阿里技术专家详解ddd系列第二弹-应用架构(代码片段)

前言架构这个词源于英文里的“Architecture“,源头是土木工程里的“建筑”和“结构”,而架构里的”架“同时又包含了”架子“(scaffolding)的含义,意指能快速搭建起来的固定结构。而今天的应用架构࿰... 查看详情

第二弹21个让程序员泪流满面的瞬间(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识【1】明明我只修改了一行代码...     【2】千万不要随便乱动旧项目【3】提交了错误的分支【4】断点调试BUG【5】当我删除一个无用的代码块【6】... 查看详情

微服务远程debug,nocalhost+rainbond微服务开发第二弹(代码片段)

之前的文章中我们介绍了如何通过Nocalhost快速开发Rainbond上的微服务,介绍了基本的开发流程。本文将续接上文继续介绍,使用Nocalhost开发配置文件实现以下内容:一键Run和远程Debug持久化配置开发容器资源限制端口转发什么是... 查看详情

第二弹21个让程序员泪流满面的瞬间(代码片段)

点击上方关注“终端研发部”设为“星标”,和你一起掌握更多数据库知识【1】明明我只修改了一行代码...     【2】千万不要随便乱动旧项目【3】提交了错误的分支【4】断点调试BUG【5】当我删除一个无用的代码块【6】... 查看详情

第二天第二弹iframe内嵌框架和from表单和input的运用(代码片段)

先是iframe框架 接下来是代码的运用<html><head><title>IFRAME</title><metacharset="utf-8"></head><iframename="top"width="100%"height="400px"src="http://www.baidu.com"frameb 查看详情

第二弹:史上最全操作系统面试整理(附答案),不服来战!!(代码片段)

史上最全,不接受反驳!!!!!!!另外,文末也给出了PDF版本,记得给帅地一个赞啊!!切勿只收藏不给赞哈,20万字面试文档也送给大家!!!1、简单说下你对... 查看详情

blazor组件库blazui开发第二弹按钮组件(代码片段)

...ttps://www.cnblogs.com/wzxinchen/p/12096092.htmlBlazor组件库Blazui开发第二弹【按钮组件】https://www.cnblogs.com/wzxinchen/p/12096956.html常规用法@page"/"<h1>Hello,world!</h1>Welcometoyournewapp.<BButton>默认按钮</BButton><BButtonType="@... 查看详情

设计模式第二弹:不知道怎么提高代码复用性?看看这几种设计模式吧!(代码片段)

本文是设计模式的第二篇文章,第一篇文章是不知道怎么封装代码?看看这几种设计模式吧!,后面还会有提高扩展性,提高代码质量的设计模式,点个关注不迷路,哈哈~想必大家都听说过DRY原则,其实就是Don‘trepeatyourself(不... 查看详情