从Vue2到Vue3【零】——Vue3简介

news2024/12/28 21:00:44

系列文章目录

内容链接
从Vue2到Vue3【零】Vue3简介及创建

文章目录

  • 系列文章目录
  • 前言
  • 一、Vue3的发布带来了什么
    • 1.1 性能提升
    • 1.2 源码升级
    • 1.3 支持TypeScript
    • 1.4 新特性
    • 1.5 支持 vue3 的UI组件库
  • 二、创建Vue3.0工程
    • 2.1 什么是Vite
    • 2.2 利用Vite创建Vue3.0工程
    • 2.3 利用vue-cli脚手架创建Vue3.0工程
  • 三、 工程结构变化
    • 3.1 App.vue
    • 3.2 main.js
  • 四、开发者工具
    • 4.1 安装开发者工具
  • 总结


前言

Vue.js作为一种流行的JavaScript框架已经被广泛应用于前端开发中。随着Vue 3的发布,这个框架迎来了一系列的改变和升级。本文将带您深入了解从Vue 2到Vue 3的这段迁移之旅,探索新版本所引入的变化和新特性。无论您是已经使用过Vue 2的开发者,还是新手,本文都将给您带来有价值的信息和实用的迁移指南。让我们一起领略Vue 3的新时代


一、Vue3的发布带来了什么

1.1 性能提升

  • 打包大小减少41%
  • 初次渲染快55%, 更新渲染快133%
  • 内存减少54%

1.2 源码升级

  • 使用Proxy代替defineProperty实现响应式
  • 重写虚拟DOM的实现和Tree-Shaking

1.3 支持TypeScript

  • 类型安全
    TypeScript是一种静态类型的超集,它添加了类型系统到JavaScript中,可以在开发阶段捕获潜在的错误。使用TypeScript,您可以为Vue 3的组件、props、数据和方法等定义明确的类型,从而提供更好的代码可读性、可维护性和可靠性。在编译时进行类型检查有助于减少运行时错误,并提供更好的开发体验

  • 代码提示和自动补全
    TypeScript对代码编辑器的支持非常完善,包括强大的代码提示和自动补全功能。通过使用TypeScript编写Vue 3的代码,您可以获得更准确的代码提示,提高开发效率并降低出错的可能性

  • 易于重构和维护
    类型系统使得重构和维护Vue 3应用程序变得更加容易。由于有明确的类型定义,编译器可以帮助您找到潜在的问题点,并在进行重构时提供及时的反馈。这使得重构代码成为一项轻松而安全的操作,同时也降低了引入错误的风险

  • 生态系统支持
    TypeScript在JavaScript社区中广受欢迎,已经成为许多项目的首选语言。Vue 3对TypeScript的支持使其能够更好地与现有的TypeScript库和工具集成,如编辑器、构建工具、测试框架等。这为Vue 3开发者带来了更丰富和强大的生态系统支持

总的来说,Vue 3与TypeScript的结合为开发者提供了更好的开发体验、更高的代码质量和更强大的生态系统支持。无论是初学者还是有经验的开发者,使用TypeScript来开发Vue 3应用程序都将为您带来诸多好处

1.4 新特性

  • Composition API(组合API)
    • setup配置
    • ref与reactive
    • watch与watchEffect
    • provide与inject
  • 新的内置组件
    • Fragment
    • Teleport
    • Suspense
  • 其他改变
    • 新的生命周期钩子
    • data 选项应始终被声明为一个函数
    • 移除keyCode支持作为 v-on 的修饰符

1.5 支持 vue3 的UI组件库

  • element-plus
    element-plus (PC组件库)
    一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库。

  • vant
    Vant (轻量、可靠的移动端 Vue 组件库)
    Vant 是有赞前端团队开源的移动端组件库,于 2016 年开源,已持续维护 4 年时间。
    目前 Vant 已完成了对 Vue 3.0 的适配工作,并发布了 Vant 3.0 版本

  • ant-design-vue
    ant-design-vue (PC组件库)
    ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步

二、创建Vue3.0工程

2.1 什么是Vite

Vite是一个新型的构建工具,与传统的Webpack相比具有以下几个优势:

  • 快速的开发启动速度: Vite使用了ES模块的原生支持,通过利用浏览器的原生ES模块加载能力,实现了快速的冷启动速度。在开发模式下,Vite无需打包和构建整个应用程序,而是通过即时编译和按需加载的方式,只编译和加载当前正在编辑的文件,从而提供了非常快速的开发启动速度。

  • 更小的构建包体积: 由于Vite在开发模式下不需要打包整个应用程序,所以构建出来的包体积更小。这对于前端性能和加载速度非常重要,尤其对于大型应用程序来说,可以减少用户的等待时间。

  • 原生支持ES模块: Vite原生支持ES模块,可以直接在浏览器中运行原生的ES模块,而无需通过打包工具进行转换。这使得开发者可以直接使用ES模块的语法和功能,提高了开发效率并减少了构建过程中的一些问题。

  • 按需编译和热模块替换: Vite只编译和加载当前正在编辑的文件,而不是整个应用程序。这意味着在开发过程中,只有修改的文件会被重新编译,从而加快了热模块替换的速度,使开发者能够更快地看到修改的效果。

  • 更好的开发体验: Vite支持在开发过程中使用原生的浏览器开发工具,如浏览器的控制台、调试器和网络面板等。这使得开发者可以更方便地进行调试和性能优化,提供了更好的开发体验。

2.2 利用Vite创建Vue3.0工程

创建

npm init vite-app <project-name>
cd <project-name>
npm i

启动

npm run dev

初始化方法不止一种,大家可以参考Vite官网 Vite 官方中文文档

2.3 利用vue-cli脚手架创建Vue3.0工程

查看@vue/cli版本,确保@vue/cli版本在4.5.0以上

vue -V

创建

vue create vue3_test

启动

cd vue_test
npm run serve

三、 工程结构变化

3.1 App.vue

vue3组件不再需要根标签

<template>
  <div>
    <a href="https://vitejs.dev" target="_blank">
      <img src="/vite.svg" class="logo" alt="Vite logo" />
    </a>
    <a href="https://vuejs.org/" target="_blank">
      <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
    </a>
  </div>
  <HelloWorld msg="Vite + Vue" />
</template>

3.2 main.js

相较于Vue2,不再引入Vue的构造函数,代替它的是 createApp函数
挂载方式也发送变化

// import Vue from 'vue'    vue2中
//引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

// new Vue({
//  el: '#app',
//  render: h => h(App)
//})   vue2中

//创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)

//挂载
app.mount('#app')

四、开发者工具

4.1 安装开发者工具

vue2和vue3的开发者工具有区别!所以要重新安装至扩展中

这里给上网盘链接
链接:https://pan.baidu.com/s/1JLMScyyc6qpVn7KHYeNjhA?pwd=qdbc
提取码:qdbc

先下载到某个文件夹里,然后打开浏览器,点击浏览器右上角的三个点,选择扩展–>管理扩展
打开开发人员模式
在这里插入图片描述
将之前百度网盘下载的拖动进浏览器安装就好了!


总结

通过本专栏的学习,您会对Vue 3有了更深入的了解,并且具备了从Vue 2迁移到Vue 3的知识和技能。无论您是正在考虑升级现有项目,还是准备开始一个新的Vue项目,Vue 3的升级将为您带来更好的开发体验和更高的性能。随着Vue框架的不断演进,我们可以期待更多令人兴奋和创新的功能的到来。让我们一起迎接Vue框架的未来吧!

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

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

相关文章

下载最新版 VC_redist.x86.exe / VC_redist.x64.exe for Visual Studio 2015, 2017, 2019, and 2022

目录 1、如何处理程序需要的C/C运行时库&#xff1f; 2、VC_redist.x64.exe的主界面以及支持的命令行参数 3、到微软官网上下载最新版本的VC_redist.x86.exe / VC_redist.x64.exe VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

总结几个GPT的超实用之处【附带Python案例】

GPT&#xff08;Generative Pre-trained Transformer&#xff09;是人工智能领域中最受欢迎的预训练语言模型之一&#xff0c;由OpenAI开发。该模型使用深度学习技术&#xff0c;可以自动生成各种文本&#xff0c;如文章、日记、小说等。GPT的超实用之处有很多&#xff0c;下面…

【Ubuntu 20.04LTS系统】安装CUDA11.8、cuDNN,可进行CUDA版本切换

Ubuntu 20.04LTS系统安装CUDA11.8、cuDNN&#xff0c;可进行CUDA版本切换 1. 更改为清华源并更新软件列表和依赖项2. 安装CUDA3. 安装cuDNN4. CUDA版本切换 1. 更改为清华源并更新软件列表和依赖项 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ # 默认注释了源码镜像以提…

java项目之毕业生就业信息管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的毕业生就业信息管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java …

哇~真的是你呀!今天是LINUX中的SSH服务。

目录 前言 一、概述 二、身份验证机制及验证过程 三、加密机制 四、基本参数 五、基本操作 六、操作 前言 SSH&#xff08;Secure Shell&#xff09;是一种加密网络协议&#xff0c;用于远程登录和安全传输数据。在Linux系统中&#xff0c;SSH服务是一种常见的远程管理工具&am…

python copy.copy与copy.deepcopy 区别

结论 b a.copy(): 浅拷贝, a 和 b 是一个独立的对象&#xff0c;但他们的子对象还是指向统一对象&#xff08;是引用&#xff09;。 b copy.deepcopy(a): 深拷贝, a 和 b 完全拷贝了父对象及其子对象&#xff0c;两者是完全独立的。 import copy origin [1, 2, [3, 4]]…

CS拒绝连接,Cobalt Strike连接失败,Cobalt Strike使用方法(二)

本文主要介绍Cobalt Strike的界面及使用方法。 界面 菜单介绍 Cobalt Strike New Connection // 新建连接&#xff0c;可连接多个服务器端 Preferences // 设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录 Visualization // 主要展…

精益生产有哪些管理工具?

精益生产有哪些管理工具&#xff1f; 一、什么是精益生产 智能制造是落实我国制造强国战略的重要举措&#xff0c;加快推进智能制造&#xff0c;是加速我国工业化和信息化深度融合、推动制造业供给侧结构性改革的重要着力点&#xff0c;对重塑我国制造业竞争新优势具有重要意义…

java项目---2048

目录 游戏介绍 游戏玩法 全代码 &#xff08;1&#xff09;Main类&#xff1a; &#xff08;2&#xff09;GamePanel类 &#xff08;3&#xff09;Card类 &#xff08;4&#xff09;GameFrame类 项目设计思路 1.绘制一个窗口 2.创建菜单 3.创建所有空白卡片 &…

项目经理在日常管理工作中需要注意什么?

项目管理的核心在于以项目经理为主导的团队协作&#xff0c;项目经理需要管理团队成员&#xff0c;保障团队的产出和效能。因此&#xff0c;项目经理需要具备多种能力&#xff0c;如沟通能力、管理能力、洞察人心的能力等&#xff0c;才能有效推动项目进展。 1、制定计划是项…

如何更改idea的背景,以及显示某些属性

idea项目无法正常显示的问题 在idea中右侧的属性都不存在的解决方法,或左边的不显示,我浏览了很多的文章才找到的解决办法,在这里分享给大家 就可以显示出来了,因为我原来已经显示了,当我取消后就看不到了 修改背景 1.先进入到设置的页面 选择完成后点击ok把设置关了就设置成功…

Java开发 - 深入理解Redis哨兵机制原理

前言 Redis的主从、哨兵模式、集群模式&#xff0c;在前文中都已经有了详细的搭建流程&#xff0c;可谓是手把手教程&#xff0c;也得到了很多朋友的喜欢。由于前文偏向于应用方面&#xff0c;就导致了理论知识的匮乏&#xff0c;我们可能会用了&#xff0c;但却不明所以&…

基于STM32的homeassistant(采用FreeRTOS操作系统)【第三章:HA服务器搭建、数据展示】

第三章开发环境 硬件设备STM32与各类传感器&#xff08;与前两章一致&#xff09;服务器设备腾讯云&#xff08;阿里云等云服务器或自建服务器端均可&#xff09;移植环境Homeassistant、EMQ 具体实现方案 视频教程 homeassistant配置MQTT集成以及传感器实体&#xff08;ST…

C语言程序设计——结构体、枚举、联合

一、结构体 1. 概念 结构体是一种自定义的数据类型&#xff0c;它是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构体由多个数据成员组成&#xff0c;这些成员可以是不同类型的变量。 2. 结构体的声明 2.1 一般声明 struct student {char name[10];int age; …

Nginx系列之 一 反向代理

目录 Nginx系列之 一 入门_开着拖拉机回家的博客-CSDN博 一、Nginx概述 二、反向代理 2.1 正向代理 2.2 反向代理 三、反向代理实战 3.1测试服务器 3.2 配置文件说明 3.3 反向代理实战案例一 1、目的 2、具体实现 3.4 反向代理实战案例二 1、目的 2、具体实现 入…

力扣 860. 柠檬水找零

题目来源&#xff1a;https://leetcode.cn/problems/lemonade-change/description/ C题解&#xff1a;由于收到的钱币只有5&#xff0c;10&#xff0c;20三种&#xff0c;对于5元直接收&#xff0c;对于10元找零1张5元&#xff0c;对于20元找零15元&#xff0c;可以找零105或者…

java 使用 geotools 将 shp 文件(zip压缩包)转换为 geoJson 格式

步骤0&#xff1a;你也可以参考这篇文章 &#xff1a;java实现geojson格式数据与shp文件相互转换 步骤1&#xff1a;引入引入geotools工具。 步骤2&#xff1a;编写工具类&#xff0c;获取shp的zip文件。 步骤3&#xff1a;编写工具类&#xff0c;解析shp文件成为jsonObject…

6.7Jmeter5.1,非GUI模式,通过命令行传递线程数和运行时间

原创文章&#xff0c;谢绝转载。 一、前提 本次做性能测试&#xff0c;需求是需要在Linux下的非GUI模式下执行。但用命令行执行时&#xff0c;线程数需要改变&#xff0c;为了执行方便&#xff0c;不需要每次都在脚本中修改线程数&#xff0c;那么线程数都需要通过参数传递&…

如何使用自有数据微调ChatGLM-6B

构建自己的数据集 数据格式&#xff1a;问答对 官网例子 ADGEN 数据集任务为根据输入&#xff08;content&#xff09;生成一段广告词&#xff08;summary&#xff09;。 { "content": "类型#上衣*版型#宽松*版型#显瘦*图案#线条*衣样式#衬衫*衣袖型#泡泡袖…

【雕爷学编程】Arduino动手做(22)——8X8 LED点阵MAX7219屏2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#xff0c;这…