首页 > 其他分享 >VUE3 相关优势

VUE3 相关优势

时间:2024-03-02 15:33:33浏览次数:23  
标签:count vue const watch 优势 VUE3 组件 相关 ref

认识Vue3

1. Vue3组合式API体验

通过 Counter 案例 体验Vue3新引入的组合式API

<script>
export default {
 data(){
   return {
     count:0
  }
},
 methods:{
   addCount(){
     this.count++
  }
}
}
</script>
<script setup>
import { ref } from 'vue'
const count = ref(0)
const addCount = ()=> count.value++
</script>

特点:

  1. 代码量变少

  2. 分散式维护变成集中式维护

2. Vue3更多的优势

image.png

使用create-vue搭建Vue3项目

1. 认识create-vue

create-vue是Vue官方新的脚手架工具,底层切换到了 vite (下一代前端工具链),为开发提供极速响应

image.png

2. 使用create-vue创建项目

前置条件 - 已安装16.0或更高版本的Node.js

执行如下命令,这一指令将会安装并执行 create-vue

npm init vue@latest

image.png

熟悉项目和关键文件

image.png

组合式API - setup选项

1. setup选项的写法和执行时机

写法

<script>
 export default {
   setup(){
     
  },
   beforeCreate(){
     
  }
}
</script>

执行时机

在beforeCreate钩子之前执行

image.png

2. setup中写代码的特点

在setup函数中写的数据和方法需要在末尾以对象的方式return,才能给模版使用

<script>
 export default {
   setup(){
     const message = 'this is message'
     const logMessage = ()=>{
       console.log(message)
    }
     // 必须return才可以
     return {
       message,
       logMessage
    }
  }
}
</script>

3. <script setup>语法糖

script标签添加 setup标记,不需要再写导出语句,默认会添加导出语句

<script setup>
 const message = 'this is message'
 const logMessage = ()=>{
   console.log(message)
}
</script>

组合式API - reactive和ref函数

1. reactive

接受对象类型数据的参数传入并返回一个响应式的对象

<script setup>
// 导入
import { reactive } from 'vue'
// 执行函数 传入参数 变量接收
const state = reactive({
  msg:'this is msg'
})
const setSate = ()=>{
  // 修改数据更新视图
  state.msg = 'this is new msg'
}
</script>

<template>
 {{ state.msg }}
 <button @click="setState">change msg</button>
</template>

2. ref

接收简单类型或者对象类型的数据传入并返回一个响应式的对象

<script setup>
// 导入
import { ref } from 'vue'
// 执行函数 传入参数 变量接收
const count = ref(0)
const setCount = ()=>{
  // 修改数据更新视图必须加上.value
  count.value++
}
</script>

<template>
 <button @click="setCount">{{count}}</button>
</template>

3. reactive 对比 ref

  1. 都是用来生成响应式数据

  2. 不同点

    1. reactive不能处理简单类型的数据

    2. ref参数类型支持更好,但是必须通过.value做访问修改

    3. ref函数内部的实现依赖于reactive函数

  3. 在实际工作中的推荐

    1. 推荐使用ref函数,减少记忆负担,小兔鲜项目都使用ref

组合式API - computed

计算属性基本思想和Vue2保持一致,组合式API下的计算属性只是修改了API写法

<script setup>
// 导入
import {ref, computed } from 'vue'
// 原始数据
const count = ref(0)
// 计算属性
const doubleCount = computed(()=>count.value * 2)

// 原始数据
const list = ref([1,2,3,4,5,6,7,8])
// 计算属性list
const filterList = computed(item=>item > 2)
</script>

组合式API - watch

侦听一个或者多个数据的变化,数据变化时执行回调函数,俩个额外参数 immediate控制立刻执行,deep开启深度侦听

1. 侦听单个数据

<script setup>
 // 1. 导入watch
 import { ref, watch } from 'vue'
 const count = ref(0)
 // 2. 调用watch 侦听变化
 watch(count, (newValue, oldValue)=>{
   console.log(`count发生了变化,老值为${oldValue},新值为${newValue}`)
})
</script>

2. 侦听多个数据

侦听多个数据,第一个参数可以改写成数组的写法

<script setup>
 // 1. 导入watch
 import { ref, watch } from 'vue'
 const count = ref(0)
 const name = ref('cp')
 // 2. 调用watch 侦听变化
 watch([count, name], ([newCount, newName],[oldCount,oldName])=>{
   console.log(`count或者name变化了,[newCount, newName],[oldCount,oldName])
 })
</script>

3. immediate

在侦听器创建时立即出发回调,响应式数据变化之后继续执行回调

<script setup>
 // 1. 导入watch
 import { ref, watch } from 'vue'
 const count = ref(0)
 // 2. 调用watch 侦听变化
 watch(count, (newValue, oldValue)=>{
   console.log(`count发生了变化,老值为${oldValue},新值为${newValue}`)
},{
   immediate: true
})
</script>

4. deep

通过watch监听的ref对象默认是浅层侦听的,直接修改嵌套的对象属性不会触发回调执行,需要开启deep

<script setup>
 // 1. 导入watch
 import { ref, watch } from 'vue'
 const state = ref({ count: 0 })
 // 2. 监听对象state
 watch(state, ()=>{
   console.log('数据变化了')
})
 const changeStateByCount = ()=>{
   // 直接修改不会引发回调执行
   state.value.count++
}
</script>

<script setup>
 // 1. 导入watch
 import { ref, watch } from 'vue'
 const state = ref({ count: 0 })
 // 2. 监听对象state 并开启deep
 watch(state, ()=>{
   console.log('数据变化了')
},{deep:true})
 const changeStateByCount = ()=>{
   // 此时修改可以触发回调
   state.value.count++
}
</script>

组合式API - 生命周期函数

1. 选项式对比组合式

image.png

2. 生命周期函数基本使用

  1. 导入生命周期函数

  2. 执行生命周期函数,传入回调

<scirpt setup>
import { onMounted } from 'vue'
onMounted(()=>{
// 自定义逻辑
})
</script>

3. 执行多次

生命周期函数执行多次的时候,会按照顺序依次执行

<scirpt setup>
import { onMounted } from 'vue'
onMounted(()=>{
// 自定义逻辑
})

onMounted(()=>{
// 自定义逻辑
})
</script>

组合式API - 父子通信

1. 父传子

基本思想

  1. 父组件中给子组件绑定属性

  2. 子组件内部通过props选项接收数据

image.png

2. 子传父

基本思想

  1. 父组件中给子组件标签通过@绑定事件

  2. 子组件内部通过 emit 方法触发事件

image.png

组合式API - 模版引用

概念:通过 ref标识 获取真实的 dom对象或者组件实例对象

1. 基本使用

实现步骤:

  1. 调用ref函数生成一个ref对象

  2. 通过ref标识绑定ref对象到标签

image.png

2. defineExpose

默认情况下在 <script setup>语法糖下组件内部的属性和方法是不开放给父组件访问的,可以通过defineExpose编译宏指定哪些属性和方法容许访问 说明:指定testMessage属性可以被访问到

image.png

组合式API - provide和inject

1. 作用和场景

顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信

image.png

2. 跨层传递普通数据

实现步骤

  1. 顶层组件通过 provide 函数提供数据

  2. 底层组件通过 inject 函数提供数据

image.png

3. 跨层传递响应式数据

在调用provide函数时,第二个参数设置为ref对象

image.png

4. 跨层传递方法

顶层组件可以向底层组件传递方法,底层组件调用方法修改顶层组件的数据

image.png

综合案例

image.png

1. 项目地址

git clone  http://git.itcast.cn/heimaqianduan/vue3-basic-project.git

2. 项目说明

  1. 模版已经配置好了案例必须的安装包

  2. 案例用到的接口在 README.MD文件 中

  3. 案例项目有俩个分支,main主分支为开发分支,complete分支为完成版分支供开发完参考

标签:count,vue,const,watch,优势,VUE3,组件,相关,ref
From: https://www.cnblogs.com/ueme/p/18048690

相关文章

  • 函数相关
    对不起,我看到你的原始内容非常详尽,我试图对它进行概括。如果你希望我更全面地转换为Markdown格式,我可以做到。下面是更详细的版本:Python中的函数在Python中,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。1.函数的......
  • 直播系统app源码,Android端与屏幕相关的几个注意事项
    直播系统app源码,Android端与屏幕相关的几个注意事项Android端的宽屏适配、禁止截屏和保持屏幕常亮,是直播系统app源码开发时需要注意的三个重要事项。宽屏适配越来越多的手机厂商趋向于全面屏设计,屏幕比例均超过过去常见的16:9比例。超大屏幕比例的设计对于AndroidAp......
  • vue3 js 方式实现学习时长正向计数器 时分秒转秒 秒转时分秒
    //学习时长constLocktime=ref('00:00:00');consttimeAlarmTWO=ref(null);consthour=ref(0);constminute=ref(0);constsecond=ref(10);constreckon=ref(true);//判断是否在计时//判断一下数值的变化consttimer=()=>{second.value=second......
  • Java特性和优势
    Java特性和优势简单性面向对象可移植性高性能分布式动态性(反射)多线程安全性健壮性Java三大版本JavaSE:标准版(桌面程序,控制台开发)JavaME:嵌入式开发(手机,小家电)JavaEE:E企业级开发(Web端,服务器开发)JDK、JRE、JVMJDK:JavaDevelopmen......
  • vue3+vite,封装 echarts 组件以及如何使用
    1.封装echarts组件1.安装echarts所需npm包,如下。[email protected]@3.1.0//社区图等npmi@vueuse/[email protected]//一些好用的hook2.封装echarts组件1.在component目录下新建Echarts文件夹2.在Echarts文件夹下新建config文件夹(......
  • Vue3通过provide/inject设置全局变量
    在Vue3中,你可以使用组合API来注入和使用全局变量。组合API提供了一种更灵活的方式来组织和重用组件逻辑,包括全局状态的管理。以下是在Vue3中使用组合API来注入和使用全局变量的基本步骤:创建全局变量:在一个单独的文件中,创建全局变量并导出它,使其可在整个应用中使用......
  • Vue3组件库搭建及测试
    一、搭建Vite环境1.创建目录&初始化包配置&安装Vite依赖mkdirgresgying-uicdgresgying-uinpminitnpmivite-D2.根目录创建index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Gresgyi......
  • SQL server数据库相关运维脚本
    SQLserver数据库相关运维脚本创建数据库USEmaster;goDECLARE@database_nameNVARCHAR(50);DECLARE@data_fileNVARCHAR(50);DECLARE@sqlNVARCHAR(MAX);--数据库名SET@database_name='数据库名';--数据文件存放路径,该路径必须存在。--路径中不允许使用空格等字......
  • Qt QModbus相关类实现ModbusTcpServer总结
    在疫情环境下催生出了很多的无人或者减少人员接触的项目,比如无人智慧餐厅项目中的无人送餐项目,主要是由送餐小车和一个中控屏和部分协助发餐的设备组成,由于餐厅一般的范围不会很大,考虑到Wi-Fi通信可能比较麻烦,我们前期组网协议使用的是zigbee,这样的话小车可以无网络运行且待......
  • vue3——环境变量的配置
    vue3环境变量的配置开发环境(development)测试环境(testing)生产环境(production)项目根目录分别添加开发、生产和测试环境的文件!.env.development.env.production.env.test文件内容变量必须以VITE_为前缀才能暴露给外部读取NODE_ENV='development'VITE_APP_TITLE=......