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…...
ubuntu-server 安装 navidia 显卡驱动
资料 https://juejin.cn/post/7362562720708280332 过程 ubuntu-drivers devices 选择ubuntu-server安装 rootroot:~# ubuntu-drivers devices udevadm hwdb is deprecated. Use systemd-hwdb instead. udevadm hwdb is deprecated. Use systemd-hwdb instead. udevadm hwd…...
【学习笔记】计算机网络(四)
第4章 网络层 文章目录 第4章 网络层4.1 网络层的几个重要概念4.1.1 网络层提供的两种服务虚电路服务(Virtual Circuit Service)数据报服务(Datagram Service) 4.1.2 网络层的两个层面 4.2 网际协议 IP - IPv44.2.1 虚拟互连网络4…...
DeepSeek-R1:通过强化学习激励大语言模型的推理能力
摘要 本文介绍了我们的第一代推理模型,DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是通过大规 模强化学习(RL)训练的模型,在没有使用监督微调(SFT)这个前置步骤的情况下,展示了卓越的推…...
Linux运维——网络管理
Linux网络管理 一、Linux网络应用要点二、命令常见用法2.1、curl2.1.1、发送GET请求2.1.2、发送POST请求2.1.3、设置请求头2.1.4、处理cookies2.1.5、处理重定向2.1.6、调试和详细信息2.1.7、使用代理2.1.8、文件上传2.1.9、其它常用选项2.1.10、综合示例 2.2、wget2.2.1、基本…...
洛谷 P8705:[蓝桥杯 2020 省 B1] 填空题之“试题 E :矩阵” ← 卡特兰数
【题目来源】 https://www.luogu.com.cn/problem/P8705 【题目描述】 把 1∼2020 放在 21010 的矩阵里。要求同一行中右边的比左边大,同一列中下边的比上边的大。一共有多少种方案? 答案很大,你只需要给出方案数除以 2020 的余数即可。 【答案提交】 …...
基于Flink SQL实现7天用户行为风险识别,结合滚动窗口预聚合与CEP复杂事件处理技术,根据用户7天的动作,包括交易,支付,评价等行为,识别用户的风险等级
一、数据建模与预聚合 1. 数据源定义 CREATE TABLE user_actions (user_id STRING,event_time TIMESTAMP(3),action_type STRING, -- 交易/支付/评价amount DOUBLE,status STRING, -- 交易状态(成功/失败)review_score INT, -- 评价分数&#x…...
【无标题】网络安全公钥密码体制
第一节 网络安全 概述 一、基本概念 网络安全通信所需要的基本属性“ 机密性;消息完整性;可访问性与可用性;身份认证。 二、网络安全威胁 窃听;插入;假冒;劫持;拒绝服务Dos和分布式拒绝服务…...
【含开题报告+文档+PPT+源码】基于SpringBoot的进销存管理系统的设计与实现
开题报告 本文提出并研发了一款基于Spring Boot框架构建的进销存管理系统,该系统集成了全方位的企业运营管理功能,涵盖了用户登录验证、系统公告管理、员工信息与权限管理、物料全流程(采购入库、销售出库、退货处理)控制、部门组…...
Linux-SaltStack配置
文章目录 SaltStack配置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2025年02月24日20点51分 SaltStack配置 SaltStack 中既支持SSH协议也支持我们的一个客户端 #获取公钥(…...
DeepSeek-OpenSourceWeek-第二天-DeepEP
DeepSeek正在进行“开源周”活动,在第二天推出了DeepEP,这是一个面向混合专家(MoE)模型训练和推理的开源通信库。DeepSeek此前的成果已令人印象深刻,此次开源关键组件,体现了其对透明度、社区合作以及推动AI进步的决心,通过5个代码库(已发布2个)来展示这一承诺。 第一…...
事务的4个特性和4个隔离级别
事务的4个特性和4个隔离级别 1. 什么是事务2. 事务的ACID特性2.1 原子性2.2 一致性2.3 持久性2.4 隔离性 3. 事务的创建4. 事务并发时出现的问题4.1 DIRTY READ 脏读4.2 NON - REPEATABLR READ 不可重复读4.3 PHANTOM READ 幻读 5. 事务的隔离级别5.1 READ UNCOMMITTED 读未提交…...
对计算机中缓存的理解和使用Redis作为缓存
使用Redis作为缓存缓存例子缓存的引入 Redis缓存的实现 使用Redis作为缓存 缓存 什么是缓存,第一次接触这个东西是在考研学习408的时候,计算机组成原理里面学习到Cache缓存,用于降低由于内存和CPU的速度的差异带来的延迟。它是在CPU和内存…...
vue3 下载文件 responseType-blob 或者 a标签
在 Vue 3 中,你可以使用 axios 或 fetch 来下载文件,并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例: 使用 axios 下载文件 首先,确保你已经安装了 axios: npm install axios然后在你…...
SOME/IP-SD -- 协议英文原文讲解5
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.5 S…...
lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并等。
入口类:exportPdf package xcsy.qms.webapi.service;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.ibm.icu.text.RuleBasedNumberFormat; import com.lowa…...
MySQL undo log,redo log和bin log日志文件的生成时间点、层级归属、存储位置及生命周期详解
问题: 假如库名叫做A库,表名叫B表,undo log,redo log和bin log,这些日志文件的生成的时间点是什么?是在mysql的哪一层生成的?哪些文件是有buffer的?哪些日志文件是存在磁盘上的?哪些…...
吃一堑长一智
工作中经历,有感触记录下 故事一 以前在一家公司时,自己是一名开发人员,遇到问题请教领导解决方案,当时领导给了建议,后来上线后出问题了,背了锅。心里想的是领导说这样做的呀,为什么出问题还…...
DeepSeek基础之机器学习
文章目录 一、核心概念总结(一)机器学习基本定义(二)基本术语(三)假设空间(四)归纳偏好(五)“没有免费的午餐”定理(NFL 定理) 二、重…...
达梦有没有类似oerr的功能
在oracle 23ai的sqlplus中,直接看异常信息说明: 达梦没有此功能,但是可以造一个 cd /home/dmdba cat >err.sql<<eof set echo off set ver off set timing off set lineshow off set feedback off select * from V\$ERR_INFO wher…...
实战-网安
面试感受:网安公司前端实习 今天我有幸面试了一家网络安全公司的前端开发实习岗位,整个过程让我受益匪浅,也让我对未来的职业发展有了更清晰的认识。 首先,面试官非常专业且友好,整个面试氛围轻松但不失严谨。面试一开始,面试官简单介绍了公司背景和团队文化,让我对公…...
一文掌握Splash的详细使用
文章目录 1. 安装与启动 Splash1.1 使用 Docker 安装1.2 直接安装 2. 基本用法2.1 访问 Splash 界面2.2 使用 Splash 渲染页面2.3 使用 Lua 脚本 3. 高级用法3.1 处理 JavaScript3.2 截图与 PDF3.3 处理 AJAX 请求3.4 设置请求头3.5 处理 Cookies 4. 与 Scrapy 集成4.1 安装 Sc…...
从 Linux 服务器到前端到网关到后端业务逻辑的分析
前言 在现代 Web 应用程序的架构中,一个完整的请求处理流程涉及多个组件,涵盖了用户界面、服务器环境、网关层和后端业务逻辑。理解这一过程有助于优化系统性能、提高用户体验,并确保系统的可维护性和可扩展性。本文将详细分析从 Linux 服务…...
Java中的Stream API:从入门到实战
引言 在现代Java开发中,Stream API 是处理集合数据的强大工具。它不仅让代码更加简洁易读,还能通过并行处理提升性能。本文将带你从基础概念入手,逐步深入Stream API的使用,并通过实战案例展示其强大功能。 1. 什么是Stream API…...
【python随手记】——读取文本文件内容转换为json格式
文章目录 前言一、TXT文件转换为JSON数组1.txt文件内容2.python代码3.输出结果 二、TXT文件转换为JSON对象1.txt文件2.python代码3.输出结果 前言 场景:用于读取包含空格分隔数据的TXT文件,并将其转换为结构化JSON文件 一、TXT文件转换为JSON数组 1.tx…...
【蓝桥杯】第十五届省赛大学真题组真题解析
【蓝桥杯】第十五届省赛大学真题组真题解析 一、智能停车系统 1、知识点 (1)flex-wrap 控制子元素的换行方式 属性值有: no-wrap不换行wrap伸缩容器不够则自动往下换行wrap-reverse伸缩容器不够则自动往上换行 (2࿰…...
MybatisPlus-扩展功能-枚举处理器
在Mybatis里有一个叫TypeHandler的类型处理器,我们常见的PO当中的这些成员变量的数据类型,它都有对应的处理器,因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器࿰…...
力扣2454. 下一个更大元素 IV
力扣2454. 下一个更大元素 IV 题目 题目解析及思路 题目要求对于每个数,找到右边比它大的第二个数,并记录在ans数组中 如果是右边第一个大的,就用一个递减栈即可,栈顶元素如果<当前元素则弹出 第二个大数就要利用弹出的栈顶…...
unity学习51:所有UI的父物体:canvas画布
目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载,导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas,UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…...
Ollama部署与常用命令
Ollama是一款开源工具,其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型,如 Llama 2、Qwen2.5等。 通过Ollama,用户无需具备深厚的技术背景,就能在普通的消费级硬件上快速搭建一个强大的语言处理环…...
