07 Vue3框架简介

news2024/9/23 23:33:08

文章目录

  • 一、Vue3简介
    • 1. 简介
    • 2. 相关网站
    • 3. 前端技术对比
    • 4. JS前端框架
    • 5. Vue核心内容
    • 6. 使用方式
  • 二、基础概念
    • 1. 创建一个应用
    • 2. 变量双向绑定(v-model)
    • 3. 条件控制(v-if)
    • 4. 数组遍历(v-for)
    • 5. 绑定事件(v-on)
    • 6. 表单
  • 三、AJAX交互


一、Vue3简介

1. 简介

Vue是一个流行的JavaScript框架,适合用于构建交互式的Web界面。
Vue的核心特性是响应式数据、组件系统、模板语法和虚拟DOM。
Vue提供了许多有用的工具和库,例如路由、状态管理、指令、过滤器、过渡效果等。

Vue3相关技术栈

  • ECMAScript 6 (ES6) : 提高 JavaScript 的可读性和可维护性,引入了类(Class)的概念
  • Node.js:跨平台的 JavaScript 运行环境
  • npm:Node.js 的默认包管理器
  • vite:前端项目构建工具
  • Router:用于在 Vue 应用程序中实现页面间的导航和路由管理
  • Pinia:通过状态管理实现组件数据传递
  • Axios:在 Vue.js 应用中处理 HTTP 请求
  • Element-plus:基于 Vue 3 的开源 UI 组件库

2. 相关网站

Vue 3 官方中文文档
Vue3 教程

3. 前端技术对比

在这里插入图片描述

4. JS前端框架

  • jQuery:优点是简化了DOM操作,缺点是频繁操作DOM,影响前端性能。
  • Angular:将后台的MVC模式搬到了前端,增加了模块化开发的理念;对后台程序员友好,对前端程序员不太友好。
  • React:在内存中模拟DOM操作,有效的提升了前端渲染效率;缺点是使用复杂。
  • Vue:综合了Angular(模块化)和React(虚拟DOM)的优点。

5. Vue核心内容

在这里插入图片描述

6. 使用方式

  • 通过 Vite 的构建
    项目使用基于 Vite 的构建设置,并允许使用 Vue 的单文件组件 (SFC)。

  • 通过 CDN 使用 Vue
    通过 CDN 使用 Vue 时,不涉及“构建步骤”。这使得设置更加简单。但是无法使用单文件组件 (SFC) 语法。

二、基础概念

1. 创建一个应用

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
	<!-- 在页面声明一个将要被Vue控制的DOM区域 -->
	<div id="app"></div>
</body>
<script>
	// 选项式 API 风格
	const app = {
		// data() 返回的属性将会成为响应式的状态
		// 并且暴露在 `this` 上
		data() {
			return {
				count: 0
			}
		},
		// methods 是一些用来更改状态与触发更新的函数
		// 它们可以在模板中作为事件处理器绑定
		methods: {
			increment() {
				this.count++
			}
		},
		// 生命周期钩子,会在组件生命周期的各个不同阶段被调用
		// 例如这个函数就会在组件挂载完成后被调用
		mounted() {
			// `this` 指向当前组件实例
			console.log(`The initial count is ${this.count}.`)
		},
		// Vue 组件的模板
		template : `
			<button @click="increment">Count is: {{ count }}</button>
		`
	}
	// 通过Vue框架,使挂载的id可以使用app内定义的变量和方法
	Vue.createApp(app).mount('#app')
</script>
</html>

2. 变量双向绑定(v-model)

  • 使用 v-model 指令实现表单数据双向绑定
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
	<div id="app">
		<input type="text" v-model="message">
		<p>{{ message }}</p>
	</div>
</body>
<script>
	const app = {
		data() {
			return {
				message: ''
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

3. 条件控制(v-if)

  • 使用 v-if 指令条件性地渲染元素
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
	<div id="app">
		<input type="text" v-model="num">
		<p v-if="num>0">num 大于 0</p>
		<p v-else-if="num==0">num 等于 0</p>
		<p v-else>num 小于 0</p>
	</div>
</body>
<script>
	const app = {
		data() {
			return {
				num: 0
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

4. 数组遍历(v-for)

  • 使用 v-for 指令循环渲染元素
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
	<div id="app">
		<p v-for="item in items" :key="item.id">
			{{ item.id }} - {{ item.text }}
		</p>
	</div>
</body>
<script>
	const app = {
		data() {
			return {
				items: [
					{ id: 1, text: 'test 1' },
					{ id: 2, text: 'test 2' },
				]
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

5. 绑定事件(v-on)

  • 使用 v-on 指令在 HTML 元素上绑定事件监听器
  • v-on 指令可以缩写为 @ 符号
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
	<div id="app">
		<button v-on:click="count+=1">Count is: {{ count }}</button>
	</div>
</body>
<script>
	const app = {
		data() {
			return {
				count: 0
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

6. 表单

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
</head>
<body>
<div id="app">
	<p>单行文本框:</p>
	<input v-model="data.message1" placeholder="请输入……">
	<p>输入内容: {{ data.message1 }}</p>
	<p>多行文本框:</p>
	<textarea v-model="data.message2" placeholder="请输入……"></textarea>
	<p>输入内容: {{ data.message2 }}</p>
</div>
</body>
<script>
	const app = {
		data() {
			return {
				data : {
					message1: '',
					message2: ''
				}
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>
  • HTML页面效果
    在这里插入图片描述

三、AJAX交互

推荐使⽤Axios来完成AJAX请求。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Test</title>
    <meta charset="UTF-8">
    <link rel="icon" href="data:;base64,=">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/3.3.13/vue.global.prod.js"></script>
	<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.6.2/axios.js"></script>
</head>
<body>
<div id="app">
	<div>
		<p>姓名: <input type="text" v-model="data.baseAccountQueryVo.accountName"></p>
		<button @click="submitForm">查询</button>
	</div>
	<hr>
	<div>
		<div v-for="item in items" :key="item.id">
			<div>姓名: {{ item.accountName }}</div>
			<div>电话: {{ item.mobileNum }}</div>
		</div>
	</div>
</div>
</body>
<script>
	const app = {
		data() {
			return {
				items: [],
				data: {
					"baseAccountQueryVo": {}
				}
			}
		},
		methods: {
			submitForm() {
				axios.post("http://127.0.0.1:8081/test/api/baseAccount/list",this.data).then(response => {
					this.items = response.data.baseAccountQueryVos;
				}).catch(error => {
					console.log(error);
				});
			}
		}
	}
	Vue.createApp(app).mount('#app')
</script>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1335286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目经理到底要不要考取PMP证书呢?

IT行业考PMP的人是最多的&#xff0c;转管理是大部分人30人的想法&#xff0c;如果是小白&#xff0c;拿到PMP证书直接转管理还是有些难度的。 不过“经验式管理终将成为过去&#xff0c;专业式管理才是时代趋势”&#xff0c;要想做好一个项目经理&#xff0c;系统的项目管理…

redis基本用法学习(C#调用StackExchange.Redis操作redis)

StackExchange.Redis是基于C#的高性能通用redis操作客户端&#xff0c;也属于常用的redis客户端之一&#xff0c;本文学习其基本用法。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装StackExchange.Redis&#xff0c;如下图所示&#xff1a;   StackExchange.…

[kubernetes]Kube-APIServer

API Server API Server是什么 提供集群管理的REST API接口&#xff0c;包括认证授权、数据校验以及集群状态变更等提供其他模块之间的数据交互和通信的枢纽&#xff08;其他模块通过API Server查询或修改数据&#xff0c;只有API Server才直接操作etcd&#xff09; 访问控制…

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

creo投影的使用-如何将一个实体的轮廓曲线单独画出来

第一步&#xff1a;先建立一个平面&#xff1a; 比如你需要将实物的曲线正对自己&#xff0c;然后建立此面的偏移平面&#xff0c;然后选中新建立的偏移平面&#xff0c; 然后进入新偏移平面的草绘&#xff0c;然后就可以进行投影了。 第二步&#xff1a;建立参考&#xff1a;…

VMware安装linux系统一

1、创建虚拟机 1.1、创建新的虚拟机 1.2、进入安装向导 1.3、安装操作系统&#xff0c;选择稍后安装操作系统 1.4、选择Linux,版本选择CentOS64位 1.5、设置虚拟机名称和安装位置 1.6、设置磁盘大小 1.7、创建虚拟机 1.8、完成安装 2、配置虚拟机 2.1、选择编辑虚拟机 2.2、修…

drf知识--05

两个视图基类 # APIView&#xff1a;之前一直在用---》drf提供的最顶层的父类---》以后所有视图类&#xff0c;都继承自它 # GenericAPIView&#xff1a;继承自APIView--》封装 继承APIView序列化类Response写接口 # urls.py--总路由 from django.contrib import admin from dj…

SQL server 数据库面试题及答案(实操3)

一、编程题 公司部门表 department 字段名称 数据类型 约束等 字段描述 id int 主键&#xff0c;自增 部门ID name varchar(32) 非空&#xff0c;唯一 部门名称 description varchar(1024) …

天猫生意参谋的各模块功能

生意参谋常用的几个模块有首页、实时、作战室、流量、品类、交易、市场、竞争八大模块&#xff0c;各模块功能如下图所示 1.首页&#xff1a;主要用来了解店铺整体体情况。 2.实时&#xff1a;主要用来了解店铺实时数据总览&#xff0c;分析实时客户访客来源&#xff0c;商品…

【算法题】链表重排(js)

力扣链接&#xff1a;https://leetcode.cn/problems/LGjMqU/description/ /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode…

案例082:基于微信小程序的跑腿管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

智能优化算法应用:基于厨师算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于厨师算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于厨师算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.厨师算法4.实验参数设定5.算法结果6.参考文献7.MA…

pytorch 踩坑

pytorch 踩坑 在pytorch中&#xff0c;如果你定义了没用的组件&#xff0c;同样也会影响你的模型(我也不知道从哪里影响的)&#xff0c;看一个例子 def _make_layer(self, block, planes, blocks, stride1, dilateFalse):norm_layer self._norm_layer#downsample Noneprevio…

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf

Vue-Pinina基本教程

前言 官网地址&#xff1a;Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容&#xff0c;需要有vuex的基础&#xff0c;下面很多概念会直接省略&#xff0c;比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库&#xff0c;它允许您跨…

阻抗控制中的弹簧与阻尼影响分析

阻抗控制是一种机器人控制方法&#xff0c;通过调整机器人的阻抗来实现对机器人的精准控制。在阻抗控制中&#xff0c;弹簧和阻尼是两个重要的参数&#xff0c;它们对机器人的性能和稳定性有很大的影响。 弹簧代表机器人的刚度和弹性&#xff0c;而阻尼代表机器人的阻尼特性&a…

喜报频传!百望云获评“2023数字经济独角兽”称号

“数字经济独角兽”是在数字经济领域具备高成长性、高创新性和高潜力性的企业&#xff0c;他们不仅是数字经济的先锋&#xff0c;是科技创新型企业的典范&#xff0c;也是推动经济发展的新兴引擎。 12月20日&#xff0c;“2023数字经济独角兽大会”在北京大兴区成功举办。大会以…

防火墙双机热备配置步骤

拓朴图&#xff1a; 步骤&#xff1a; 1、交换机分配vlan&#xff0c;分配网关&#xff1b;PC分配IP 2、防火墙划分区域 firewall zone trust add interface G1/0/0 dis zone 3、分配IP&#xff0c;分配服务 service-manage ping permit 4、做安全策略&#xff08;先允…

基于Python的新能源汽车销量分析与预测系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 基于Python的新能源汽车销量分析与预测系统是一个使用Python编程语言和Flask框架开发的系统。它可以帮助用户分析和预测新能源汽车的销量情况。该系统使用了关系数据库进行数据存储&#xff0c;并…

推荐几款非常好用的软件,干货满满!

作为一个工具控&#xff0c;一直在社区索取别人的营养&#xff0c;今天在下将我搜集的一些应用贡献出来&#xff0c;推介十几个我常用的软件。一些是其他人反复推介确实经典&#xff0c;另一些是我偶然发现但经过使用感觉非常好用&#xff0c;一并献上&#xff0c;大家可以根据…