Vue的项目创建以及项目目录与组合式API
一.创建Vue
1.Vue-CLI:创建Vue的脚手架工具
2.Create-vue:是Vue官方提供的脚手架之一,底层采用官方自主研发的vite,快捷,开发方便。
3.准备工作:系统中需要安装nodejs环境,在该环境中提供npm包管理器
4.创建Vue项目的命令:npm init vue@latest
5.切换至新建的项目目录下:cd vue-demol1
6.安装项目的基础依赖:npm install
7.需要注意的是:npm安装比较慢时,需要将npm镜像地切换至国内镜像,参考API
8.启动项目:npm run dev
9.默认访问界面
二.项目目录
node_models:包管理器
main.js:入口文件
index.html:挂载文件
app.vue:根组件
<script></script>
<template></template>
<style></style>
vite.config.js:项目配置文件,基于vite的配置
packege.json:项目的包文件,包含启动信息,依赖版本配置
三.组合式API
将项目中需要核心API进行封装,提供setup的语法糖
通常情况下:组合式API的优先级最高
setup选项的执行时机?
在组件加载时最先执行,优先级高于钩子函数beforeCreate()
setup写代码的特点是什么?
定义数据+函数
setup中this是否还指向组件实例?
this默认情况下指向undefined
3.2reactive和ref函数
实现双向数据绑定(响应式数据)的组合式api
3.2.1.reactive
接收对象类型数据参数,返回响应式对象
如何使用:
- 导入reactive
- 使用reactive函数
优点:语法清晰,使用简单
缺点:只支持对象类型的数据
3.2.2.ref
接受简单数据或者对象数据类型参数,返回响应式对象
如何使用:
- 导入ref
- 使用ref函数
优点:支持多种数据类型,页面元素中可以直接使用引用名
缺点:脚本中需要通过value属性控制数据
reactive和ref函数的共同作用是什么?
用函数调用的发式生成响应式数据,实现双向数据绑定
reactive和ref对比谁更好?
reactive不能处理简单类型数据
ref支持更多种数据类型,需要通过value属性操作数据
ref内部是依赖reactive
3.3computed
计算属性:实现的功能与Vue2的语法一致,在Vue3中只是改变语法结构
如何使用:
- 导入computed
- 执行函数完成计算过程
计算属性的缺点?
计算属性在异步请求中会出现数据不匹配的情况
计算属性的特点?
计算属性用于进行运算,避免直接修改值
3.4Watch
watch函数用于监听数据变化,可以侦听一个或多个的变化
函数参数:newVal新数据。oldVal旧数据。Immediate(立即执行),deep深度侦听
如何使用:
- 导入函数
- 调用执行函数
作为函数的第一个参数,ref对象需要通过value获取值吗?
不需要,watch会自动读取
Watch能侦听什么样的数据?
单个或多个数据
不开启deep,直接修改对象中的属性值会触发回调函数吗?
不会,默认浅层监听
不开启deep,需要侦听对象中的某一个属性,怎么执行回调函数?
将第一个参数传入函数,返回需要监听的属性
3.5.生命周期函数
在组件的初始化,挂载,元素加载前,更新,销毁等环节自动调用的回调函数
选项式API(Vue2) | 组合式API(Vue3) |
beforeCreate/created | setup |
beforeMount | onBeforeMount |
mounted | onmounted |
beforeUpdate | onBeforeUpdate |
updated | onUpdated |
beforeUnmount | onBeforeUnmount |
unmounted | onUnmounted |
如何使用:
- 调用工具
- 使用函数
组合式API中的生命周期函数语法格式是什么?
可以像调用函数一样去使用。on+生命周期的名字
在组合式API中如何调用onCreated函数?
在组合式API中没有onCreated函数,已经集成到setup中了
beforeCreate与setup谁的优先级更高?
setup优先级更高
组合式API中,组件卸载完毕调用哪一个钩子函数?
onUnmounted
钩子(hook)函数是处理拦截在软件组件之间传递的函数调用、事件或消息的代码,本质上是用以处理系统消息的程序,通过系统调用将其挂入系统中。
四.调用setup
1.App.vue里面的<script></script>中
console.log('调用了setup')const message="今天天气不错";const logMessage=()=>{console.log(message)}
在template中写
{{ message }}<button @click="logMessage">gotoLog</button>
2.使用reactive
在App.vue文件中的<script></script>中
import { reactive,ref } from 'vue'; const state=reactive({count:0})const setCount=()=>{state.count++}
在template中写
<button @click="setCount">{{ state.count }}</button>
3.computed计算属性
const count=ref(0)const setCount=()=>{count.value++//ref会将值存放在value属性中,通过调用该属性获取数据}
<button @click="setCount">{{ count}}</button>
<script setup>
//export default{// setup(){// console.log('调用了setup')// const message="今天天气不错";// const logMessage=()=>{// console.log(message)// }// return{// message,// logMessage// }// },//} // console.log('调用了setup')// const message="今天天气不错";// const logMessage=()=>{// console.log(message)// }//使用reactive()import { reactive,ref } from 'vue'; // const state=reactive({count:0})// const setCount=()=>{// state.count++// }//computed计算属性// const count=ref(0)// const setCount=()=>{// count.value++//ref会将值存放在value属性中,通过调用该属性获取数据// }// import { computed } from 'vue';// const list=ref([1,2,3,4,5,6,7,8,9])// const computedList=computed(()=>{// return list.value.filter(item=>item>2)// })// //3秒之后源list中的值增加// setTimeout(()=>{// list.value.push(10,11)// },3000)//watch侦听属性// import { watch } from 'vue';// const count=ref(0)// const setCount=()=>{// count.value++// }// const username=ref('wahaha')// const setUsername=()=>{// username.value='zhangsan'// }//侦听一个数// watch(count,(newVal,oldVal)=>{// console.log('count变化了',newVal,oldVal)// })//侦听多个数据//参数1:数组,侦听多个数据//参数2的参数1:新值//参数2的参数2:旧值// watch([count,username],([newVal,newVal1],[oldVal,oldVal1])=>{// console.log('count变化了',[newVal,newVal1],[oldVal,oldVal1])// })//立即侦听,页面渲染完毕,先执行一次侦听动作// import {ref,watch} from 'vue'// const count=ref(0)// const setCount=()=>{// count.value++// }// watch(count,()=>{// console.log('count值变化了')// },{immediate:true})//深度侦听// import {ref,watch} from 'vue'// const state=ref({count:0})// const setStateByCount=()=>{// state.value.count++// }// watch(state,()=>{// console.log('state中的count值变化了')// },{// deep:true// })//深度侦听对象数据中某一个属性(精确侦听)// import {ref,watch} from 'vue'// const info=ref({// username:'wahaha',// age:18// })// const setInfoByName=()=>{// info.value.username='张三'// }// const setInfoByAge=()=>{// info.value.age=28// }// watch(()=>// info.value.age// ,()=>{// console.log('age变化了')// })//生命周期函数// import { onMounted } from 'vue';// onMounted(()=>{// console.log('元素加载完毕执行了mounted函数1')// })// onMounted(()=>{// console.log('元素加载完毕执行了mounted函数2')// })
</script><template>this is div<div><!-- {{ message }}<button @click="logMessage">gotoLog</button> --><!-- <button @click="setCount">{{ state.count }}</button> --><!-- <button @click="setCount">{{ count}}</button> --><!-- 原值{{ list }}计算属性返回值{{ computedList }} --><!-- <button @click="setCount">{{ count}}</button> --><!-- <button @click="setUsername">{{ username}}</button> --><!-- <button @click="setCount">{{ count}}</button> --><!-- {{ state.count }}<button @click="setStateByCount">修改state中的count值</button> --><!-- {{ info.username }}{{ info.age }}<button @click="setInfoByName">修改姓名</button><button @click="setInfoByAge">修改年龄</button> --></div>
</template><style scoped></style>
相关文章:

Vue的项目创建以及项目目录与组合式API
一.创建Vue 1.Vue-CLI:创建Vue的脚手架工具 2.Create-vue:是Vue官方提供的脚手架之一,底层采用官方自主研发的vite,快捷,开发方便。 3.准备工作:系统中需要安装nodejs环境,在该环境中提供npm包管理器 4.创建Vue项目的命令:npm init vuela…...

数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)
1 引言 线性数据结构的元素满足唯一的线性关系,每个元素(初第一个和最后一个外)只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次关系。但是图形结构的元素之间的关系是任意的。 什么是图? 简单来说&…...
前端八股——JS+ES6
前端八股:JSES6 说明:个人总结,用于个人复习回顾,将持续改正创作,已在语雀公开,欢迎评论改正。...

Python 课堂点名桌面小程序
一、场景分析 闲来无事,老婆说叫我开发一个课堂点名桌面小程序,给她在课堂随机点名学生问问题。 人生苦短,那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel,所以安装两个依赖: pip install openpyxl…...
【Java基础】Java中new一个对象时,JVM到底做了什么?
Java中new一个对象时,JVM到底做了什么? 在Java编程中,new关键字是我们创建对象的最常用方式。但你是否想过,当你写下new MyClass()时,Java虚拟机(JVM)到底在背后做了哪些工作?今天&…...
C#中的字典怎么使用?
在C#中,Dictionary<TKey, TValue> 是一个泛型集合类,用于存储键值对(key-value pairs)。它提供了快速的查找、插入和删除操作,适合需要根据键快速查找值的场景。以下是 Dictionary 的基本用法和常见操作…...

vue框架后遗症∶被遗忘的dom操作
用多了vue、react等前端框架,不得不说用数据驱动视图来开发真的很香,但是也免不了会有不用这些框架的项目,dom操作还是很有必要的,一开始学习网页设计的时候就教过,后面一直开发项目基本上用框架。虽然有些想不起来了&…...

进程 ─── linux第10课
目录 回顾上一节 进程 基本概念 描述进程 - PCB task_struct - PCB的一种 task_ struct内容分类 组织进程 下面来介绍task_struct内部 PID 和PPID 子进程与父进程 getpid()和getppid() 杀进程 exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过sy…...

线性模型 - 支持向量机
支持向量机(SVM)是一种用于分类(和回归)的监督学习算法,其主要目标是找到一个最佳决策超平面,将数据点分为不同的类别,并且使得分类边界与最近的数据点之间的间隔(margin)…...
MyBatis-Plus注解配置:@TableName、@TableId、@TableField
MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了一系列注解,用于简化数据库表与实体类之间的映射关系。以下是 @TableName、@TableId 和 @TableField 这三个常用注解的配置和使用说明。 官方文档:…...
DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案
项目场景: deepseek部署常用系统Ubuntu系统, xshell5连接Ubuntu22遇到如下问题: 问题描述 xshell5连接Ubuntu22遇到如下问题: Connecting to 172.16.46.80:22... Could not connect to 172.16.46.80 (port 22): Connection fa…...

论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测
摘要 由于现实世界数据的稀缺性,基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real (Synthetic to Real)域泛…...

【Java】Tomcat日志
Tomcat日志 tomcat 日志的配置文件是tomcat目录下的/conf/logging.properties。 日志输出级别:SEVERE (最高级别) > WARNING > INFO > CONFIG > FINE > FINER(精心) > FINEST (所有内容,最低级别) 日志分类 tomcat 有五类日志 : …...
datalist 是什么?
一、datalist 是什么? datalist 是 HTML5 引入的一个表单相关元素,它本质上是一个为输入框(<input>)提供预定义选项列表的容器。从外观上看,当用户在与之关联的输入框中进行输入操作时,会自动弹出一个…...

初阶数据结构(C语言实现)——3顺序表和链表(3)
3.链表 3.1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的物理结构 1.从上图可看出,链式结构在逻辑上是连续的,但是在物理上不一定连续…...
Docker 数据卷管理及优化
Docker 数据卷是一个可供容器使用的特殊目录,它绕过了容器的文件系统,直接将数据存储在宿主机上。通过数据卷,可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差ÿ…...

Hi3516CV610车牌识别算法源码之——车牌识别算法初体验
本文讲述如何使用Hi3516CV610开发板读取本地图片,运行车牌识别算法推理,得到车牌信息并打印; 下一篇将介绍Hi3516CV610开发板如何从sensor摄像头获取图像,运行车牌识别算法推理,得到车牌信息并打印; 一、准…...
使用内置命令查看笔记本电池健康状态
如何使用powercfg /batteryreport命令查看笔记本电池健康状态 在Windows系统中,了解笔记本电池的健康状态对于维护电脑性能和预测电池寿命至关重要。Windows 10和Windows 11系统提供了一个内置命令powercfg /batteryreport,可以生成一份详细的电池使用情…...

HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统
适用型号:【BOD-WXX9】 MagicBook 15 2021款 i7 独显 MX450 16GB512GB (BDR-WFE9HN) MagicBook 15 2021款 i5 独显 MX450 16GB512GB (BDR-WFH9HN) MagicBook 15 2021款 i5 集显 16GB512GB (BDR-WFH9HN) 链接:https://pan.baidu.com/s/1S6L57ADS18fnJZ1…...
transformer架构的语言模型保存的内容与格式详解
前文我们已经详细讲述了基于pytorch框架下的transformer架构如何从零开始构建一个小型字符级语言模型,构建过程中涵盖数据准备、模型架构设计、训练、评估与生成的整个流程。我们已经了解了各个部分的细节,而且已经提供了完整的python代码。现在需要了解我们构建好的模型如何…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...