【vue3语法】开发使用创建项目等

news2025/1/16 21:52:06

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、vue3
      • 创建vue3
      • v2函数式、v3组合式api
      • 响应式方法ref、reactive
      • 计算属性conputed
      • 监听属性wacth
      • vue3 选项式生命周期
      • 父子通信
        • 父传子
          • defineProps编译宏
        • 子传父
          • defineEmits方法
        • 获取DOM ref
          • defineExpose
      • 跨组件通信 provied & inject
      • vue3一些定义define
        • 1、defineOptions 可以声明和setup平级的
        • 2、 defineExpose 暴露当前组件方法和函数
        • 3、 defineEmits 子父通信
        • 4、 defineProps 父子通信
        • 5、 defineModel
  • 二、Pinia
      • 安装Pinia,及使用
  • 总结


前言

一、vue3

创建vue3

npm init vue@latest

在这里插入图片描述

v2函数式、v3组合式api

函数式
在这里插入图片描述
组合式
>在这里插入图片描述

响应式方法ref、reactive

ref script里面使用要.value 简单类型或复杂类型
reactive 复杂类型

<script setup>
import { ref,reactive } from "vue"
const a = ref(0)
console.log(a.value) // 0
const clicks=()=>{
a.value++
}

const b = reactive({
color:"1234"
})

</script>
<template>
<div>
{{a}}
<button @click=”clicks“></button>
</div>
</template>

在这里插入图片描述

计算属性conputed

conputed 计算属性应该只包含计算逻辑
避免直接修改计算属性的值
支持get,set

<script setup>
import { ref,conputed } from "vue"
const list = ref([1,2,3,4,5,6,7,8,9])

const a = conputed(()=>{
  return list.value.filter((item)=>{return item>3}) 
}) // a 为[4,5,6,7,8,9]
</script>

监听属性wacth

wacth 支持浅监听、深度监听

<script>
const s =ref(0)
// 浅监听
const a = wacth([s]/**
  [s] //监听数组
  s  //监听单个属性
  ()=>s.age //监听复杂类型里的单个属性
 */,(newValue,oldValue)=>{
})


// 深度监听
const a = wacth([s]/**s 可写数组和监听单个*/,(newValue,oldValue)=>{
}{
deep:true;//深度监听 复杂数据等等
immediate:true //页面加载时执行一次
})
<?script>

在这里插入图片描述### 生命周期

vue3 选项式生命周期

beforeCreate/created 变成setup
beforeUnmount/Unmounted
其他与v2一样

组合式api
setup 初始化
其他在选项是前加on

<script setup>

</script>

在这里插入图片描述

父子通信

父传子

父":"动态声明,子defineProps接收

defineProps编译宏
<template>
<Bate mesage="子"></Bate>//子组件
</template>
<script>
const a = defineProps({
mesage:"123"
})
</script>

在这里插入图片描述

子传父

emit传递,@接收

defineEmits方法
<template>
<Bate @changes="(e)=>{console.log(e);/**e为5*/}"></Bate>//子组件
</template>
<script>
const emit = defineEmits(['changes'])//声明
const a = ()=>{
emit('changes',5)传递
}
</script>

在这里插入图片描述在这里插入图片描述

获取DOM ref

ref 获取DOM
ref 获取组件 需要暴露组件内部方法,默认不暴露
ref 声明响应式数据

defineExpose

暴露setup方法可以在父组件访问

<script setup>
import {ref} from "vue"
const inp =ref(null)
onMounted(()=>{
console.log(inp.value)
})
defineExpose({
inp,
})
</script>
<template>
<input type="text"/ ref="inp">//绑定ref
</template>

在这里插入图片描述

跨组件通信 provied & inject

顶层组件

const key= '123'
provied('key', key)

在这里插入图片描述

底层组件

const key= inject('key')
console.log(key)// 返回值123

在这里插入图片描述

vue3一些定义define

1、defineOptions 可以声明和setup平级的

在这里插入图片描述

2、 defineExpose 暴露当前组件方法和函数
<script>
defineExpose({
inp,
})
</script>
3、 defineEmits 子父通信
<script>
const emit = defineEmits(['changes'])//声明
const a = ()=>{
emit('changes',5)传递
}
</script>
4、 defineProps 父子通信
<script>
const a = defineProps({
mesage:"123"
})
</script>
5、 defineModel

动态显示父子传值
实验性质的宏

使用v-model需要父传子,然后监听修改值
在这里插入图片描述在这里插入图片描述

defineModel的写法
v-model 父组件传值,
在这里插入图片描述

在这里插入图片描述
启动defineModel,重新运行项目
在这里插入图片描述

二、Pinia

安装Pinia,及使用

npm init vue@latest 创建vue项目可选Pinia直接安装好
npm install pinia

  • main.ts
import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'
import router from './router'
import pinia from './store'
// import 'element-plus/dist/index.css'
createApp(App).use(router).use(pinia).mount('#app')
  • src下创建store/index.ts
import { createPinia } from 'pinia'
// * pinia持久化数据,可以将 pinia 的状态持久化到本地存储中,以便在页面刷新或重新加载后保持状态的一致性。
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

// 引入自定方法
import userAppStrote from './user/index'
export { userAppStrote }

const pinia = createPinia()

// 注册持久化插件
pinia.use(piniaPluginPersistedstate)

export default pinia

  • 创建store/user/index.ts
  • 声明方法等,persist: true 开启持久化
import { defineStore } from 'pinia'
import { userTpye } from './types'
import { productType } from '@/api'
const userAppStrote = defineStore(
  'useAppStrote',
  (): userTpye => {
    // 产品类型
    const ProductType = ref('2')
    productType().then((res: any) => {
      ProductType.value = res.data.ProductType
    })

    // 防抖
    var timer: any = null
    const AntiShake = (request: any, params: object, time: number) => {
      return new Promise(async r => {
        if (timer == null) {
          timer = setTimeout(() => {
            request(params).then((res: any) => {
              timer = null
              r(res)
            })
          }, time * 1000)
        } else {
          r(false)
        }
      })
    }
    return {
      ProductType,
      productType,
      timer,
      AntiShake,
    }
  },
  {
    persist: true, // 开起持久化
  }
)

export default userAppStrote

  • 创建store/user/type.ts 类型定义
// 类型定义
export interface userTpye {
  ProductType: Ref<string>
  productType: () => Promise<unknown>
  timer: any
  AntiShake: (arg0: any, arg1: object, arg3: number) => Promise<unknown>
}

  • 使用pinia
  • userStrote或使用storeToRefs解构
import { userAppStrote } from '@/store'
import { storeToRefs } from 'pinia'
const userStrote = userAppStrote()
// userStrote.ProductType
const rouer = useRouter()
const { ProductType } = storeToRefs(userStrote)

console.log(ProductType)

总结

vue语法,以及基本配置

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

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

相关文章

linux 0.11 调试c代码

我们可以通过实验楼实验环境 来调试linux0.11的c代码。 cd ~/oslab/ tar -zxvf hit-oslab-linux-20110823.tar.gz -C ~ cd ~/oslab/linux-0.11/ make cd ~/oslab/ nohup ./dbg-c & nohup terminator & ls在新的窗口执行 ./rungdb,进入调试状态。 输入 set disassemb…

三 . 运算符和流程控制——Java基础篇

三 . 运算符和流程控制 1. 运算符 1 . 赋值运算符 1.2.1 基本语法 符号&#xff1a; 当“”两侧数据类型不一致时&#xff0c;可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。 扩展赋值运算符&#xff1a; 、 -、*、 /、% 赋值运算符符号解释将符号左…

三、矩阵基本知识

目录 1. 理解 2、矩阵的直观感受 3、矩阵与向量 1. 理解 ①矩阵是一个向量组&#xff0c;由许多 行向量 和 纵向量 组成。 ②矩阵方程求解 用增广矩阵初等变换化为 E 。齐次/非齐次方程组 的解用 初等变化 化为 行最简阶梯型。 ③初步认为由多元一次方程组的系数组成&…

谈谈Redis的哈希槽和一致性哈希

一 . 前言 在 Redis 集群里面主要涉及到两种 Hash 算法 : 一种是一致性哈希 , 这种算法在 适用dis Cluster方案中并没有实现,主要在外部的代理模式 (Twemproxy)一种是 Slot 哈希槽算法 ,这种算法就是 Cluster 的核心算法所以谈到这个问题的时候,不能只讲一部分。在 Red…

SpringMVC 学习(六)之视图

目录 1 SpringMVC 视图介绍 2 JSP 视图 3 Thymeleaf 视图 4 FreeMarker 视图 5 XSLT 视图 6 请求转发与重定向 6.1 请求转发 (Forward) 6.2 重定向 (Redirect) 7 视图控制器 (view-controller) 1 SpringMVC 视图介绍 在 SpringMVC 框架中&#xff0c;视图可以是一个 J…

电机控制常见的外围器件

小型断路器&#xff1a; 这些通通都叫小型断路器&#xff0c;二十年的老电工不一定都认识&#xff0c;不信看看_哔哩哔哩_bilibili 1PIN 2PIN 3PIN 4PIN: 正常情况下火线和零线的电流是相等的&#xff0c;但是漏电的情况下&#xff0c;两线的电流差值大于30毫安&#xff0c;漏…

成功解决ModuleNotFoundError: No module named ‘tensorboard‘

成功解决ModuleNotFoundError: No module named ‘tensorboard’ &#x1f4c5;2024年02月25日 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础…

深度学习数据集——球类、运动、体育相关数据集

体育运动的动作识别分类等工作&#xff0c;一直是深度学习实践的重要领域&#xff0c;这里涉及到动作捕捉、分类、识别、计数等多种类型&#xff01;今天就给大家分享关于以上内容的深度学习数据集&#xff01;&#xff01; 1、收集22种类型的运动的图像数据集 数据说明&…

使用apt-mirror做一个本地ubuntu离线apt源

1. 安装 apt-mirror sudo apt-get install apt-mirror2. 创建文件夹 mkdir ./apt_mirror_dir3. 修改apt-mirror的配置文件 sudo gedit /etc/apt/mirror.list得到以下文件,重点对两个位置进行修改&#xff1a; ############# config ################## # ## 修改1&#xff…

鸿蒙中的九种布局概述

鸿蒙中的九种布局概述 概述 鸿蒙开发中包含就种布局&#xff0c;分别为线性布局、层叠布局、弹性布局、相对布局、栅格布局、媒体布局、列表、网格、轮播。 线性布局 线性布局通过Row和Column进行构建&#xff0c;是其他布局的基础。其中Row是水平方向排列&#xff0c;Colu…

在Linux服务器上部署一个单机项目

目录 一、jdk安装 二、tomcat安装 三、MySQL安装 四、部署项目 一、jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录&#xff0c;将安装包拖进去 2. 解压安装包 这里需要解压到usr/local目录下&#xff0c;在这里我新建一个文件夹保存解压后的文件 [r…

babylonjs入门模

基于babylonjs封装的一些功能和插件 &#xff0c;希望有更多的小伙伴一起玩babylonjs&#xff1b; 欢迎加群&#xff1a;464146715 官方文档 中文文档 最小模版 ​ 代码如下&#xff1a; 在react中使用 import React, { FC, useCallback, useEffect, useRef, useState } f…

抖音视频提取软件怎么用|抖音数据抓取工具

针对用户获取抖音视频的需求&#xff0c;我们开发了一款功能强大的抖音视频提取软件&#xff0c;旨在帮助用户轻松获取他们感兴趣的视频内容。无需逐个复制链接&#xff0c;无需繁琐的下载步骤&#xff0c;我们的软件让抖音视频获取变得简单快捷。 使用我们的软件非常简单&…

使用免费的L53巧解Freenom域名失效问题

进入2月份以来&#xff0c;不少小伙伴纷纷收到Freenom提供的域名失效&#xff0c;状态由正常变成了Pending。 失效后&#xff0c;域名无法使用&#xff0c;免费的午餐没有了&#xff0c;而现在域名的价格也是水涨船高&#xff0c;真是XXX。很多做外贸的小伙伴表示 难 啊&#x…

谁是单身狗?——C语言刷题

创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 单身狗1 题述 在一个整型数组中&#xff0c;只有一个数字出现一次&#xff0c;其他数组都是成对出现的&#xff0c;请找出那个只出现一次的数字。 例如&#xff1a; 数组中有&#xff1a;1 2 3 4 5 1 2 3 4&a…

spring注解驱动系列--Bean生命周期二

一、BeanPostProcessor执行流程 在bean生命周期中&#xff0c;当bean对象创建完了之后&#xff0c;会调用populateBean(beanName, mbd, instanceWrapper);给bean进行属性赋值&#xff0c;之后会调用initializeBean方法进行初始化&#xff0c;而BeanPostProcessor中的postProces…

HTML 面试题汇总

HTML 面试题汇总 1. 什么是 <!DOCTYPE>&#xff1f;是否需要在 HTML5 中使用&#xff1f; 参考答案&#xff1a; 它是 HTML 的文档声明&#xff0c;通过它告诉浏览器&#xff0c;使用哪一个 HTML 版本标准解析文档。 在浏览器发展的历史中&#xff0c;HTML 出现过很多个版…

【前端素材】推荐优质医院后台管理系统I-Health平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理和配置操…

算法练习-组合总和【回溯算法】(思路+流程图+代码)

难度参考 难度&#xff1a;困难 分类&#xff1a;回溯算法 难度与分类由我所参与的培训课程提供&#xff0c;但需 要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0…

相机姿态slovePnP

opencv slovePnP 物体的姿态 估计 物体的姿态&#xff08;位置和方向&#xff09; 通过已知的图像坐标点数组&#xff0c;和对应的世界坐标点数组&#xff0c;相机的内参&#xff0c;畸变参数&#xff0c;求解相机姿态&#xff0c;即旋转向量和平移向量&#xff0c; 例如&…