一篇文章认识Vue3

Vue 3 介绍

  1. Vue3 于 2022 年 2 月 7 日星期一成为新的默认版本!
  2. Vue3 性能更高,体积更小
  3. Vue3 在经过一年的迭代后,越来越好用。

官方文档:

  • vue3官方文档: vuejs.org/ [1]
  • vue3中文文档: v3.cn.vuejs.org/ [2]
  • vue3预发布版文档: staging-cn.vuejs.org/ [3]

目前已支持 vue3 的UI组件库:

  • element-plus

    element-plus.gitee.io/#/zh-CN[4] (PC组件库)

    Element Plus,一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库。

  • vant

    vant-contrib.gitee.io/vant/v3/#/z…[5]

    轻量、可靠的移动端 Vue 组件库。

    Vant 是有赞前端团队开源的移动端组件库,于 2016 年开源,已持续维护 4 年时间。

    目前 Vant 已完成了对 Vue 3.0 的适配工作,并发布了 Vant 3.0 版本

  • ant-design-vue (PC组件库)

    antdv.com/docs/vue/in…[6]

    ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步。

Vue3 动机 和 新特性

Vue3 设计理念 vue3js.cn/vue-composi…[7]

动机与目的:

  1. 更好的 逻辑复用 与 代码组织 (composition组合式api)

    options 选项API(旧) => composition 组合API(新), 效果: 代码组织更方便了, 逻辑复用更方便了 非常利于维护!!

  2. 更好的类型推导 (typescript支持)

    vue3 源码用 ts 重写了, vue3 对 ts 的支持更友好了 (ts 可以让代码更加稳定, 类型检测! )

vue3 新特性:

  1. 数据响应式原理重新实现 (ES6 proxy 替代了 ES5 的 Object.defineProperty)

    解决了: 例如数组的更新检测等bug, 大大优化了响应式监听的性能

    (原来检测对象属性的变化, 需要一个个对属性递归监听) proxy 可以直接对整个对象劫持

  2. 虚拟DOM - 新算法 (更快 更小)

  3. 提供了composition api, 可以更好的逻辑复用

  4. 模板可以有多个根元素

  5. 源码用 typescript 重写, 有更好的类型推导 (类型检测更为严格, 更稳定)

    ...

小结: vue3 性能更高, 体积更小, 更利于复用, 代码维护更方便

vite介绍

Vite 官方中文文档:vitejs.cn/[8]

Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具

优势

  • 极速的服务启动,使用原生 ESM 文件,无需打包
  • ⚡️ 轻量快速的热重载,始终极快的模块热重载(HMR)
  • ️丰富的功能,对 TypeScript、JSX、CSS 等支持开箱即用
  • 等等

Vite的优势?

传统方式

  • 基于打包器的方式启动,必须优先抓取并构建你的整个应用,然后才能提供服务。
  • 更新速度会随着应用体积增长而直线下降。
一篇文章认识Vue3_第1张图片 image-20220212224001104.png

vite 方式

  • Vite 以 原生 ESM [9] 方式提供源码。这实际上是让浏览器接管了打包程序的部分工作。
  • Vite 只需要在浏览器请求源码时进行转换并按需提供源码。
  • 根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。
一篇文章认识Vue3_第2张图片 image-20220212224054798.png

Vite 的基本使用

目标:能够使用vite创建一个vue3的项目

(1)使用vite创建项目

npm create vite
# or
yarn create vite

(2)输入项目名字,默认为vite-project

image-20220212224535365.png image-20220212224535365.png

(3)选择创建的项目类型,选择vue即可

一篇文章认识Vue3_第3张图片 image-20220212224709912.png

(4)选择创建的vue项目类型, 不选ts

image-20220212224735340.png image-20220212224735340.png

(5)启动项目

image-20220212224801574.png image-20220212224801574.png

vite快捷使用

如果想要快速创建一个vue3项目,可以使用如下命令

  • 创建普通vue项目
yarn create vite vite-demo --template vue
  • 创建基于ts模板的项目
yarn create vite vite-demo-ts --template vue-ts

Vue3.0项目介绍

  • 删除src下所有的文件和代码
  • 创建App.vue
<template>
  <div>我是App组件div>
template>

  • 创建main.js文件
import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

vscode插件说明

  • vue2中需要安装插件 vetur,可以实现组件高亮。但是vue3的一些语法在vetur中报错。
  • vue3中需要安装插件 volar,提供了更加强大的功能。
  • 所以,使用功能vue3,需要禁用或卸载 vetur插件,安装 volar插件。
一篇文章认识Vue3_第4张图片 image-20220212230447148.png

组合式API

composition API vs options API

  1. vue2 采用的就是 options API

    (1) 优点:易于学习和使用, 每个代码有着明确的位置 (例如: 数据放 data 中, 方法放 methods中)

    (2) 缺点: 相似的逻辑, 不容易复用, 在大项目中尤为明显

    (3) 虽然 optionsAPI 可以通过mixins 提取相同的逻辑, 但是也并不是特别好维护

  2. vue3 新增的就是 composition API

    (1) compositionAPI 是基于 逻辑功能 组织代码的, 一个功能 api 相关放到一起

    (2) 即使项目大了, 功能多了, 也能快速定位功能相关的 api

    (3) 大大的提升了 代码可读性可维护性

  3. vue3 推荐使用 composition API, 也保留了options API

    即就算不用composition API, 用 vue2 的写法也完全兼容!!

setup 函数

composition api 的使用, 需要配置一个 setup 函数

  1. 从生命周期角度来看, setup 会在 beforeCreate 钩子函数之前执行
  2. setup 中不能使用 this, this 指向 undefined
  3. 在模版中需要使用的数据和函数,需要在 setup 返回。
  4. setup 函数是一个新的组件选项, 作为组件中 compositionAPI 的起点