Vue2基本知识

2023-11-19

记录Vue2基本知识,从引入vue.js文件开始,然后提出问题:1:我们使用vue后怎样将外部数据传递给我们的DOM对象?2:DOM对象中的数据如果改变,如何通知外部数据改变?最后对问题分析得出答案,完整记录vue2中基础指令知识,提供完整代码


前言

提示:本文要记录的大概内容

目前市场前后端已经分开。但是随着公司要求越来越高,面试的时候如果你可以拿出自己的项目,那么这就是你的一个亮点。本文将记录学习基础前端知识。使用的IDE是HBuilderX。


提示:以下是本篇文章正文内容

一、第一个Vue项目

将使用HBuilderX创建一个基本的Vue项目。

1.引用vue.js文件

vue.js是js封装文件。官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识。如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧!之前有其它框架的使用经验会有帮助,但这不是必需的。
和引入外部普通js文件一样引入vue.js,代码如下:

<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>

或者:

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>

2.Vue项目分析

我们思考两个问题:

1:我们使用vue后怎样将外部数据传递给我们的DOM对象?

2:DOM对象中的数据如果改变,如何通知外部数据改变?

这两个问题实际上是和Vue的双向绑定是有关系的。
现在我们必须明确知道MVVM架构。M(model)数据模型,V(view)视图层,VM(ViewModel)视图模型层。在MVVM架构中,我们将数据与视图分开,但是我们知道一个完整的项目数据与视图是不可能分开的,因为视图是用户可以直观看见的,而数据是用户执行操作后必须要关注的。我们此时的视图与数据分开只是将这两者的操作分开,实际上我们是在视图层与数据层之间添加了视图模型层,数据与视图的双向绑定就是通过数据模型层去处理的。这样子做的好处也是显而易见的,当我们程序出现问题后我们可以立马确实是视图还是数据出现问题,方便定位处理问题,我们在编写代码的时候条理更加清晰。

问题分析及答案:

1:当我们从外部传递数据给DOM对象的时候,我们必须知道将这个数据传递给那个DOM对象,数据显示在这个DOM对象的什么地方。
与传统的获取DOM对象类似,在Vue里面我们也必须指定DOM对象的id属性。我们通过id属性将DOM对象与Vue对象绑定在一起。
我们使用插值表达式去绑定数据。
2:因为我们实现了DOM对象与Vue对象双向绑定,所以当我们的DOM对象数据改变时,会通知Vue对象去改变外部数据。

代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- <script src="https://unpkg.com/vue@next"></script> -->
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app-v"> 
		<!-- 插值表达式 -->
		{{message}}
		</div>
		<script>
			// 创建一个Vue对象
			var app = new Vue({
			// 通过DOM对象的id属性绑定DOM对象
				el: '#app-v',
				// 数据绑定
				data: {
					message: 'Hello Vue!'
				}
			})
		</script>
	</body>
</html>

3.指令学习

v-text:这个指令是Vue中定义的DOM属性,相当于innerText。
v-html:这个指令是Vue中定义的DOM属性,相当于innerHtml。
v-on:这个指令是Vue中定义的DOM属性,用于设置监听事件,有两种使用方法。

代码如下:

<p v-text="message"></p>
<p v-html="message"></p>			
<input type="button" value="测试按钮1" v-on:click="test1('aaaa')" />
<input type="button" value="测试按钮2" @click="test2('bbbb')" />

这里的v-text与v-html属性值是Vue对象里面的定义的数据模型值。是实现绑定的,两者必须一致。
v-on:click的属性值是Vue对象中定义的方法名。

完整代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>指令练习</title>
		<!-- <script src="https://unpkg.com/vue@next"></script> -->
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app-v">
			<p>{{message}}</p>
			<p v-text="message"></p>
			<p v-html="message"></p>
			<input type="button" value="测试按钮1" v-on:click="test1('aaaa')" />
			<input type="button" value="测试按钮2" @click="test2('bbbb')" />
		</div>
		<script>
			var app = new Vue({
				el: '#app-v',
				data: {
					message: '<b>Hello Vue!</b>'
				},
				methods: {
					test1(a) {
						this.message = a;
					},
					test2(b) {
						this.message = b;
					}
				}
			})
		</script>
	</body>
</html>

v-show:这个指令是控制DOM对象的显示与隐藏。指令属性值是我们在Vue对象的data里面定义的属性值。
代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>指令练习</title>
		<!-- <script src="https://unpkg.com/vue@next"></script> -->
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app-v">
			<img style="width: 960px;height: 640px;" v-show="show" src="img/0.jpg" />
			<img style="width: 960px;height: 640px;" v-show="hidden" src="img/1.jpg" />
		</div>
		<script>
			var app = new Vue({
				el: '#app-v',
				data: {
					show: true,
					hidden: true
				},
			})
		</script>
	</body>
</html>

v-if:这个指令也是控制DOM对象的显示与隐藏。但是与v-show指令的区别是,两者的属性值都是false的时候,v-show标签不会将隐藏的DOM对象删除掉,而v-if指令会将DOM元素删除掉。
v-else:与v-if指令配合使用,控制DOM对象的隐藏与展示。

v-model:这个指令相当于DOM对象的value属性。
v-bind:这个指令是用于绑定DOM对象的属性。
v-for:这个指令是用于循环数据。详细使用代码如下:

<template>
	<div>
		<table>
			<tr>
				<th>姓名</th>
				<th>年龄</th>
				<th>性别</th>
			</tr>
			<tr v-for="person in people">
				<td>{{person.name}}</td>
				<td>{{person.age}}</td>
				<td>{{person.gender}}</td>
			</tr>
		</table>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				people: [{
					name: "Simon",
					age: 22,
					gender: "man"
				}, {
					name: "Simon",
					age: 22,
					gender: "man"
				}, {
					name: "Simon",
					age: 22,
					gender: "man"
				}, {
					name: "Simon",
					age: 22,
					gender: "man"
				}]
			}
		}
	}
</script>
<style>
</style>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue2基本知识 的相关文章

  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 它们是“相同的”吗?代码大战

    这是完整的问题描述 给定两个数组 a 和 b 编写一个函数 comp a b Clojure 中的 compSame a b 来检查这两个数组是否具有 相同 元素以及相同的重数 这里 相同 意味着 b 中的元素是 a 平方中的元素 无论顺序
  • 在java中将jpeg/png转换为像素数组

    如何将包含 jpeg 或 png 的字符串转换为像素数组 最好是一维 理想情况下使用java内置的类 原来你需要公共文件上传 http commons apache org fileupload 看着那 这用户指南 http commons
  • 使用 Spring 注入 Google Guava Hashmultimap

    是否可以提供一个创建示例Multimap
  • Laravel Vue SPA 与 MPA/SSR

    许多 laravel vue 教程使用 ajax 调用来获取数据 看来 SPA 与 Laravel 是完全隔离的 IE Laravel 只是一个数据 API vue 应用程序也可以简单地托管在第三方外部服务器 例如 AWS S3 上 这是推
  • 如何告诉 Java SAX 解析器忽略无效字符引用?

    当尝试使用字符引用解析不正确的 XML 时 例如 x1 Java 的 SAX 解析器因致命错误而惨死 例如 org xml sax SAXParseException Character reference x1 is an invalid
  • Hibernate3:自引用对象

    需要一些帮助来了解如何执行此操作 我将在文件系统上运行递归 查找 并且希望将信息保留在单个数据库表中 具有自引用的层次结构 这是我想要填充的数据库表结构 目录对象表 id int NOT NULL name varchar 255 NOT
  • 如何更改 Vuetify 日历日期格式

    我正在尝试在以下 Vuetify 日历上启用输入事件 https github com vuetifyjs vuetify blob master packages docs src examples calendars complex e
  • 根据数据更改图例颜色高图表

    我可以根据数据动态设置列的颜色 但无法弄清楚如何更改图例中的颜色 请注意 jsfiddle 最新的条形图是绿色的 但图例是蓝色的 有没有办法改变列颜色也会改变图例颜色 这是我用于列颜色的代码 jsfiddle http jsfiddle n
  • 如何在 Next.js 中正确使用 Mongoose 模型?

    我正在使用 TypeScript 和 MongoDB Mongoose 构建 Next js 应用程序 我在使用 Mongoose 模型时开始遇到错误 这导致它们在每次使用模型时都尝试覆盖模型 导致模型覆盖错误的代码 import mong
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • Java可以进行进程监控吗?

    是否可以用Java编写一个在托盘中运行的应用程序 并且当启动某个应用程序时 它可以检测到它 我想对某些程序执行此操作 以了解我每周使用它们多长时间 我是 Java 新手 所以我不知道 Java 是否是最适合此操作的语言 或者它是否具有对操作
  • jQuery 单击附加元素不起作用

    我有一个数组 我正在从 Array 获取数据并在 jQuery Append to list 中使用它 但是当我单击列表项时 它只显示最后一个元素 var array 1 2 7 3 4 8 5 6 9 for var i 0 i lt a
  • 限制线的长度

    我正在尝试画一条代表 弹弓 的线 并且希望它具有最大拉伸长度 在 p5 中 我在位置和位置之间画了一条线 line posA x posA y posB x posB y posA 是鼠标 x 和 y posB 是画布上圆的位置 我想要做的
  • Hive NVL 不适用于列的日期类型 - NullpointerException

    我正在使用 HDFS 上的 MapR Hive 发行版并面临以下问题 如果表的列类型是 日期 类型 则NVL https cwiki apache org confluence display Hive LanguageManual UDF
  • 我可以从同一个 jar 文件执行两个不同的类吗?

    我有一个项目 在一个包中我制作了服务器 在第二个包中我制作了客户端 它运行良好 我想创建一个 Jar 文件 是否可以使用同一个 jar 文件分别运行客户端和服务器 我使用了只有一个 main 的 jar 文件 当我运行 jar 文件时 它会
  • @JsonCreator '无法找到具有名称的创建者属性',即使使用ignoreUnknown = true

    我有以下课程 JsonIgnoreProperties ignoreUnknown true public class Topic private List
  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu
  • $vuetify.goTo 不会在 v-card 组件内滚动

    我有一个带有 v 卡的组件 我在卡片标题区域放置了一个简单的按钮 当我单击时 我看到该方法被触发 它显示在控制台中 但是 卡片永远不会滚动 如果我输错了类名 则会收到错误 因此 goTo 似乎会执行某些操作 因为它找不到该类 没有拼写错误
  • 如何更改MultipartFile的originalFilename

    我在服务器端有一个 MultipartFile 文件 我想更改该文件的原始文件名 但该类仅支持 getOriginalFilename 谁能帮我这个 PS 上传的是图片文件 多谢 您可以使用 MockMultipartFile 类更改名称

随机推荐

  • 报错TranscationalController3#addUser(String, String)to { [/trans/addUser]}: There is already ‘transcat

    TranscationalController3 addUser String String to trans addUser There is already transcationalController bean method con
  • js 处理树形结构数据

    js 处理树形结构数据 数据 let data id 1 address 安徽 parent id 0 id 2 address 江苏 parent id 0 id 3 address 合肥 parent id 1 id 4 address
  • Educoder - Java面向对象 - 文件类

    掌握知识点 第一关 IO包了解 File类了解 FileFileter类了解 IOException类了解 linux操作系统了解 通关源码 第1关 创建文件 package step1 import java io File import
  • JSON字符串不规范命名(java的规范)的解决办法

    为什么80 的码农都做不了架构师 gt gt gt 在建立json对应的java实体的时候 正常我们是实体的属性名和json的key名字保持一致的 这样在转换的过程中就能保存上对应key的value值 但是遇到不规范命名的json的时候咋办
  • flatten-maven-plugin 的使用

    引入 flatten maven plugin flatten maven plugin 插件的功能就不赘述了 网上也有很多文章描述这一块的内容 以一个 maven 多模块的项目为例 使用的时候直接在项目的父 pom 里加入如下的配置
  • matlab 分类学习工具箱 Classification Learner的使用及导出其生成的图,混淆矩阵confusion matrix的画法

    声明 转自https blog csdn net qq 27914913 article details 71436838 https blog csdn net evil xue article details 89765890 在mat
  • Golang语言记录

    编译成Linux可执行文件 先设置环境 SET GOARCH amd64 SET GOOS linux SET CGO ENABLED 0 然后运行 go build o 编译成的文件名 Golang的格式化输出 定义示例类型和变量 typ
  • GD32F310 (二) 按键轮询输入

    目录 首言 一 按键输入初始化 二 按键main 应用 首言 作者 小飞虫科技 淘宝 首页 小虫飞科技 淘宝网 taobao com 开发板 GD32F3X0系列 一 按键输入初始化 void KEY Init void enable th
  • 【华为OD机试真题2023B卷 JAVA&JS】勾股数元组

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 勾股数元组 知识点编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 如果3个正整数 a b c 满足a2 b2 c2的关系 则称 a b c 为勾股数 著名的勾
  • C#中Validating和Validated事件

    您可能经常需要检查用户输入到 Windows 窗体中的信息是否有效 例如 如果您有一个电话号码的 TextBox 控件 则可以检查该控件是否只包含适当的字符 数字 括号和连字符等等 通常 可使用正则表达式验证用户输入的数据 了解Valida
  • powerdesigner汉化包

    PowerDesigner是一款专业的建模工具 如果你希望使用中文界面 你可以尝试使用汉化包 汉化包是一种用于翻译软件界面的工具 它可以将英文界面翻译成中文 你可以在网上搜索 PowerDesigner汉化包 并下载适合你当前版本的汉化包
  • 字符串函数的使用及模拟实现:strtok&strstr&strerror:

    字符串函数strstr的使用 char strstr const char str1 const char str2 Returns a pointer to the first occurrence of str2 in str1 or
  • LeetCode338. 比特位计数

    题目连接 https leetcode cn com problems counting bits 解题思路 这道题需要计算从 0 到 num 的每个数的二进制表示中的 1 的数目 最直观的方法是对每个数直接计算二进制表示中的 1 的数目
  • 使用c++超详细解释数据结构中的顺序栈和链栈

    在C 中 栈 Stack 是一种数据结构 它可以用来存储数据 并支持两种基本操作 压入 Push 和弹出 Pop 栈的特点是后进先出 Last In First Out LIFO 也就是最后压入的元素最先弹出 栈可以用数组或链表等数据结构来
  • hdu2030 汉字统计

    hdu2030 汉字统计 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 4080 Accepted
  • 树莓派的杂七杂八

    一 交叉编译jpeg 9a 生成的库为libjpeg so 先从官网下载交叉编译器 直接解压到本地 将bin目录加入到系统变量中后 进入目录执行 configure CC arm none linux gnueabi gcc enable
  • 如何在 Flink 1.9 中使用 Hive?

    Flink on Hive 介绍 SQL 是大数据领域中的重要应用场景 为了完善 Flink 的生态 发掘 Flink 在批处理方面的潜力 我们决定增强 FlinkSQL 的功能 从而让用户能够通过 Flink 完成更多的任务 Hive 是
  • 字符串 有效的字母异位词

    LC 有效的字母异位词 给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词 注意 若 s 和 t 中每个字符出现的次数都相同 则称 s 和 t 互为字母异位词 func isAnagram s String t S
  • 华为云云耀云服务器L实例评测|使用Docker部署Leanote笔记工具

    华为云云耀云服务器L实例评测 使用Docker部署Leanote笔记工具 一 前言 1 1 云耀云服务器L实例介绍 1 2 Leanote简介 二 本次实践介绍 2 1 本次实践简介 2 2 本次环境规划 三 购买云耀云服务器L实例 3 1
  • Vue2基本知识

    记录Vue2基本知识 从引入vue js文件开始 然后提出问题 1 我们使用vue后怎样将外部数据传递给我们的DOM对象 2 DOM对象中的数据如果改变 如何通知外部数据改变 最后对问题分析得出答案 完整记录vue2中基础指令知识 提供完整