VUE3【实用教程】(2024最新版)

VUE3 概述

Vue 2 已于 2023 年 12 月 31 日停止维护,请用 Vue 3

vue3 的优势

  • 性能更好
  • 体积更小
  • 更好的 TS 支持
  • 更好的代码组织
  • 更好的逻辑抽离
  • 更多新功能

vue3 升级的新功能

https://sunshinehu.blog.csdn.net/article/details/137834437

API 风格

vue3 有两种API 风格 :选项式 API 和 组合式 API

vue 2 即选项式 API,vue3 新增了组合式 API (Composition API ),为解决复杂业务逻辑而设计。

组合式 API 优势

  • 更好的代码组织
  • 更好的逻辑复用
  • 更好的类型推导

应该使用组合式 API 还是选项式 API ?

  • 不建议共用,会引起混乱
  • 小型项目、业务逻辑简单,用 Options API 选项式 API
  • 中大型项目、逻辑复杂,用 Composition API 组合式 API

搭建开发环境

官网和nvm下载切换最新版node,修改node下载源,创建项目,启动项目,安装vscode插件Vue - Official
https://blog.csdn.net/weixin_41192489/article/details/136752790

应用配置

  • 捕获所有子组件上的错误
    src/main.ts

    js 复制代码
    app.config.errorHandler = (err) => {
      /* 处理错误 */
    }

    在这里插入代码片

VUE3 基础

单文件组件 SFC

SFC的优点、缺点、使用场景、原理、使用预处理器、<script setup>语法详解、资源拆分
https://blog.csdn.net/weixin_41192489/article/details/140466279

声明响应式状态

ref,reactive,toRef(),toRefs() 等
https://blog.csdn.net/weixin_41192489/article/details/138234529

文本插值 {{ }}

响应式变量 msg 通过 {``{ }} 在模板中渲染( 解释为纯文本 ),当 msg 的值发生改变时,会触发模板重新渲染。

html 复制代码
<span>Message: {{ msg }}</span>

{``{ }} 中还可以是

  • 表达式

  • 返回一个值的,无副作用(不会改变响应式变量)的函数

    js 复制代码
    {{ formatDate(date) }}

计算属性 computed

https://blog.csdn.net/weixin_41192489/article/details/140517202

指令 v-

https://blog.csdn.net/weixin_41192489/article/details/140473239

生命周期

生命周期钩子 vs 生命周期选项 vs 缓存实例的生命周期
https://blog.csdn.net/weixin_41192489/article/details/137813685

面试技巧:在回答有哪些生命周期时,附带主动说出各自生命周期的使用场景。

侦听器 watch

自动侦听 watchEffect(),$watch,手动停止侦听器
https://blog.csdn.net/weixin_41192489/article/details/137930356

组件

父子组件传值,自定义事件,插槽,动态组件等
https://blog.csdn.net/weixin_41192489/article/details/138502548

状态管理 Pinia

状态持久化 pinia-plugin-persistedstate,异步Action,storeToRefs(),修改State的 $patch$reset
https://blog.csdn.net/weixin_41192489/article/details/140093389

VUE3 进阶

渲染函数 & JSX

https://cn.vuejs.org/guide/extras/render-function.html

自定义元素

https://cn.vuejs.org/guide/extras/web-components.html#vue-and-web-components

VUE3 拓展

vue3 中借助 tsx 使用 JSX

https://sunshinehu.blog.csdn.net/article/details/128584413

VUE3 原理

vue 应用的创建过程

  1. 创建 / 导入根组件

    每个应用都需要一个"根组件",其他组件将作为其子组件。

    js 复制代码
    import App from './App.vue'
  2. 通过 createApp 函数创建应用实例

    js 复制代码
    import { createApp } from 'vue'
    js 复制代码
    const app = createApp(App)
  3. 调用了 .mount() 方法挂载应用

    html 复制代码
    <!-- index.html 中用于挂载 vue 应用的元素 -->
    <div id="app"></div>
    js 复制代码
    app.mount('#app')

    mount 的参数为一个实际的 DOM 元素或是一个 CSS 选择器字符串。

    • 被挂载的元素不会被视为应用的一部分。
    • mount 的返回值是根组件实例而非应用实例

MVVM、响应式、模板编译、虚拟节点 vDom、diff 算法

https://blog.csdn.net/weixin_41192489/article/details/137124469

Proxy 实现响应式

https://sunshinehu.blog.csdn.net/article/details/138497769

vue3 比 vue2 快的原因

https://blog.csdn.net/weixin_41192489/article/details/137953238

vue3 与 vue 2 的 diff 算法的区别

  • Vue2 的 updateChildren 是双端比较,Vue3 的 updateChildren 增加了"最长递增子序列" (更快 )
  • Vue3 增加了 patchFlag、静态提升、函数缓存等

h 函数

https://sunshinehu.blog.csdn.net/article/details/128575335

手写 vue3

VUE3 性能优化

VUE3 提效

vscode 快捷生成 vue3 模板

https://sunshinehu.blog.csdn.net/article/details/140006775

自动路由 unplugin-vue-router

https://sunshinehu.blog.csdn.net/article/details/140007831

全局布局 vite-plugin-vue-layouts

https://sunshinehu.blog.csdn.net/article/details/140016698

自动导入框架方法 unplugin-auto-import

https://sunshinehu.blog.csdn.net/article/details/140018292

自动注册组件 unplugin-vue-components

https://sunshinehu.blog.csdn.net/article/details/140019854

使用 CSS 框架 UnoCSS

https://sunshinehu.blog.csdn.net/article/details/140034188

使用 VueUse 工具库

https://sunshinehu.blog.csdn.net/article/details/140121033

VUE3 封装 HOOK

组合式 API 通过仿 react 中的 hook 实现逻辑复用,流程如下:

  1. 抽离逻辑代码到一个函数
  2. 函数命名约定为 useXxxx格式 (React Hooks 也是 )
  3. 在 setup 中引用 useXxx 函数

实战范例:

VUE3 封装组件

VUE3 实战

相关推荐
活宝小娜4 小时前
vue不刷新浏览器更新页面的方法
前端·javascript·vue.js
程序视点4 小时前
【Vue3新工具】Pinia.js:提升开发效率,更轻量、更高效的状态管理方案!
前端·javascript·vue.js·typescript·vue·ecmascript
coldriversnow4 小时前
在Vue中,vue document.onkeydown 无效
前端·javascript·vue.js
刚刚好ā5 小时前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
会发光的猪。8 小时前
css使用弹性盒,让每个子元素平均等分父元素的4/1大小
前端·javascript·vue.js
天下代码客8 小时前
【vue】vue中.sync修饰符如何使用--详细代码对比
前端·javascript·vue.js
周全全8 小时前
Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现
java·vue.js·spring boot·安全·php
ZwaterZ9 小时前
vue el-table表格点击某行触发事件&&操作栏点击和row-click冲突问题
前端·vue.js·elementui·c#·vue
码农六六9 小时前
vue3封装Element Plus table表格组件
javascript·vue.js·elementui
徐同保9 小时前
el-table 多选改成单选
javascript·vue.js·elementui