Vue3快速上手指南

Vue3快速上手指南

Vue3简介

官⽹地址: https://vuejs.org/ 。

中⽂官⽹ https://cn.vuejs.org/

Vue是什么?

易学易⽤,性能出⾊,适⽤场景丰富的 Web 前端框架。

Vue2已经于2023年12⽉31⽇停⽌维护。建议升级到Vue.js3.0版本。打包更⼩,内存更少,渲染更快。 好消 息是,vue3向下兼容vue2的语法

Vue3于2020年9⽉18⽇发布, 久经磨砺 Vue3新特性:组合式API(重点),更好的⽀持TypeScript(熟悉),状态存储框架Pinia(重点),新组件(了 解)

⼀、整体认识Vue3项⽬

1、创建Vue3⼯程

前置:安装NodeJS。NodeJS版本18.0以上。

使⽤官⽅脚⼿架创建Vue⼯程[推荐]。

# 使⽤官⽅脚⼿架
npm create vue@latest
 # 按照脚⼿架要求选择是否启⽤相关组件
Vue.js - The Progressive JavaScript Framework
 ✔ 请输⼊项⽬名称: … myVue3
 ✔ 请输⼊包名称: … myvue3
 ✔ 是否使⽤ TypeScript 语法? … 否 / 是  # 选是
✔ 是否启⽤ JSX ⽀持? … 否 / 是
✔ 是否引⼊ Vue Router 进⾏单⻚⾯应⽤开发? … 否 / 是
✔ 是否引⼊ Pinia ⽤于状态管理? … 否 / 是
✔ 是否引⼊ Vitest ⽤于单元测试? … 否 / 是
✔ 是否要引⼊⼀款端到端(End to End)测试⼯具? › 不需要
✔ 是否引⼊ ESLint ⽤于代码质量检测? … 否 / 是 # 选是
✔ 是否引⼊ Prettier ⽤于代码格式化? … 否 / 是
✔ Add Vue DevTools extension for debugging? (experimental) … 否 / 是

# 启动项⽬
npm install
 npm run dev
#  
#  
#  VITE v5.1.6  ready in 315 ms
	➜  Local: http://localhost:5173/
 	➜  Network: use --host to expose
 	➜  press h + enter to show help

1、所有功能组件都可以后续⼿动添加。

关于TypeScript,在Vue中的TypeScript可以认为是在JS的基础上,增加⾯向对象的能⼒。可以定义接⼝、 类、抽象类等。

2、npm install过程中会去node仓库下载很多依赖库,放到项⽬本地node_modules⽬录。建议将npm源设 定为淘宝提供的国内镜像,可以下载快⼀点。

npm config get registry https://registry.npmmirror.com

补充:vue2时提供了另外⼀个脚⼿架vue-cli,也可以⽤来创建vue3项⽬。但是vue-cli已经处于停⽌维护状态。

# 安装或者升级脚⼿架
npm install -g @vue/cli
 # 查看脚⼿架版本,确保版本在4.5.0以上
vue --version
 # 创建应⽤
vue create vue_test
  2.x
 # 启动
cd vue_test
 npm run serve

另外,官⽅还有其他⼀些集成vue的⽅法,⾃⾏参考。

2、主要⼯程结构

官⽅建议开发IDE: vscode。提供了辅助开发插件 vue-official。 主要代码结构如下图 在这之前有个插件叫volar,现在已经停⽤

在这里插入图片描述

典型的Vue项⽬,都是在index.html这⼀个单⻚⾯⾥形成各种交互,这也就是所谓的SPA(Single Page Application)

Vue3的核⼼是通过createApp函数创建⼀个应⽤实例,在这个实例中构建各种应⽤。(main.ts中)

每个vue⽂件就是⼀个⻚⾯上的组件,组件可以嵌套使⽤。 vue中的组件分为

vue中的组件分为<template>⻚⾯模板,<script>脚本和<style>样式三个部分。Vue2中要求<template>下必
须有⼀个唯⼀的根元素,Vue3中则没有了这个限制。

⼆、数据双向绑定

双向绑定是Vue最为核⼼的功能。简单理解就是<template>中的⻚⾯数据和<script>中的脚本数据进⾏绑定,其
中任何⼀个数据发⽣了变化,另⼀个数据也随之发⽣变化。

1、vue2语法的双向绑定

<template>
 <div>
姓名:<input v-model="userName" /> {
   
   {
   
    userName }} <br />
薪⽔:<input type="number" v-model="salary" /> <button @click="addSalary">薪⽔加
1000</button> {
   
   {
   
    salary }}
 </div>
 </template>
 <script lang="ts">
 export default{
   
   
	 //数据
	data() {
   
   
	 return {
   
   
		 userName:"王⼀",
 		salary:15000
 	 }
  },
 	//⽅法
methods:{
   
   
 addSalary(){
   
   
 	this.salary += 1000
 		 }
  	 }
  }
 </script>
 <style scoped>
 </style>

数据双向绑定可以说是整个Vue的核⼼。例如,我们可以⽤数据双向绑定实现⼀些更为复杂的表单。

<template>
 <div>
姓名:<input v-model="userName"/> {
   
   {
   
    userName }}<br />
薪⽔:<input type="number" v-model="salary"/> {
   
   {
   
    salary }}<br />
 <button v-on:click="addSalary">提交</button> <button @click="changeUserInfo">查看个⼈信
息</button>
 </div>
 <hr />
 <div class="userInfo" v-if="showUserInfo">
 <h2>个⼈信息</h2>
年龄:<input type="number" v-model="userInfo.age" /><br />
性别:<input type="radio" value="1" v-model="userInfo.sex"><input type="radio" 
value="2" v-model="userInfo.sex"><br/>
岗位:<select v-model="userInfo.department">
 <option value="dev">开发</option>
 <option value="test">测试</option>
 <option value="maintain">运维</option>
 </select><br />
技术: <span v-for="skill in userInfo.skills" :key="skill">{
   
   {
   
    skill }}</span><br />
学习新技术: <input v-model="newSkill" /> <button @click="learnSkill">学习</button><br 
/>
个⼈信息汇总:{
   
   {
   
    userInfo }}
 </div>
 </template>
<script lang="ts">
 export default{
   
   
	 data(){
   
   
		 return{
   
   
			 userName:'roy',
 			salary:15000,
 			userInfo:{
   
   
 				age:0,
 				sex:1,
				 skills:['java','vue','python'],
 				department:''
 			 },
		 newSkill:'',
 		 showUserInfo:false
  		}
  },
 methods:{
   
   
 	addSalary(){
   
   
		 this.salary +=1000 
  	},
 	learnSkill(){
   
   
		 if(this.newSkill)
 		 this.userInfo.skills.push(this.newSkill)
  	},
	 changeUserInfo(){
   
   
 		this.showUserInfo= !this.showUserInfo
  			}
  		}
  }
 </script>
 <style scoped>
 .userInfo{
   
   
 background-color: bisque;
 width: 80%;
 }
 .userInfo span{
   
   
 background-color: yellow;
 margin-left: 10px;
 border: 1px;
 border-radius: 5px;
 }
 </style>

这样的表单,如果要⽤纯JS实现,就会相当困难。但是,⽤双向绑定就简单很多。

2、OptionsAPI和CompositionAPI

Vue2中常⽤的这种编写⽅式称为OptionsAPI,配置式。其实现⽅式是⽤⼀个统⼀的配置对象来实现全部代码逻 辑。在这个对象中,通过data、methods、computed等配置选项来控制逻辑。

OptionsAPI是Vue2时的标准API编写⽅式。Vue3向下兼容了Vue2的API。因此,Vue2的⽼项⽬,在Vue3中基本 可以⽆缝迁移。 实际上,OptionsAPI是在CompositionAPI的基础上实现的。关于Vue的基础概念和知识,在这两种API 之间是通⽤的。另外,官⽅建议,如果采⽤Vue构建完整的SPA应⽤,那么更建议使⽤CompositionAPI。

但是,OptionsAPI所有逻辑都混在⼀起,不便于维护和复⽤。 Vue3另外通过了⼀种更⽅便的API,Composition API,混合式API。

上⾯同样的示例,⽤Composition API的写法如下:

<template>
 <div>
姓名:<input v-model="userName" /> {
   
   {
   
    userName }} <br />
薪⽔:<input type="number" v-model="salary" /> <button @click="addSalary">薪⽔加
1000</button> {
   
   {
   
    salary }}
 </div>
 </template>

 <script lang="ts">
 	export default{
   
   
 		setup(){
   
   
 	//现在声明的变量还不具备双向绑定
	let userName="王⼀"
 	let salary=15000
 		function addSalary(){
   
   
 			salary += 1000
 			console.log("salary = " + salary)
  	}
 //模板要⽤哪些,就返回哪些
	return {
   
   userName,salary,addSalary}
 		}
  }
  
 </script>
 <style scoped>
 </style>
1、setup是Vue3中的⼀个⽣命周期函数,他会在组件加载时执⾏。后⾯会细讲⽣命周期。
2、setup可以返回对象或者函数。如果是⼀个对象,则对象中的属性、⽅法等,可以在模板中直接使⽤(常
⽤)。如果返回⼀个函数,则通过函数的返回值直接渲染⻚⾯,不经过模板。例如 setup(){
   
   return ()=>"直接渲染"}
3、setup是⼀个普通的函数,不能使⽤this。
OptionsAPI中可以通过this访问脚本本身的数据 同时setup中不处理this,意味着setup编写可以更灵活,不需要依赖当前⻚⾯上下⽂
4、此时声明的userName, salary等变量不具备双向绑定。Vue3对双向绑定做了重新设计,后⾯会详细分
享。
5、setup有⼀种简写的⽅式<script setup lang="ts">。这样就不需要写函数了,标签内部直接写函数体。在
标签内部声明的对象,函数等,都会直接return出去。项⽬中常⽤
<script setup lang="ts">
 //现在声明的变量还不具备双向绑定
	let userName="王⼀"
 	let salary=15000
 	function addSalary(){
   
   
		 salary += 1000
		 console.log("salary = " + salary)
	 }
 </script>

在CompositionAPI中,由于setup是⼀个不同的函数,不需要处理this。这也意味着setup函数编写可以更加灵 活,不需要依赖当前⻚⾯上下⽂。例如:将示例中的脚本单独写到⼀个ts⽂件中。

	// MySalary.ts
 	import {
   
    onMounted, ref } from "vue"
 	export default function(){
   
   
 	//现在声明的变量还不具备双向绑定。添加ref函数才能具备响应式
	const userName=ref("王⼀")
 	const salary=ref(15000)
 		function addSalary
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值