当前位置: 首页 > news >正文

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

接收对象类型数据参数,返回响应式对象

如何使用:

  1. 导入reactive
  2. 使用reactive函数

优点:语法清晰,使用简单

缺点:只支持对象类型的数据

3.2.2.ref

接受简单数据或者对象数据类型参数,返回响应式对象

如何使用:

  1. 导入ref
  2. 使用ref函数

优点:支持多种数据类型,页面元素中可以直接使用引用名

缺点:脚本中需要通过value属性控制数据

reactive和ref函数的共同作用是什么?

用函数调用的发式生成响应式数据,实现双向数据绑定

reactive和ref对比谁更好?

reactive不能处理简单类型数据

ref支持更多种数据类型,需要通过value属性操作数据

ref内部是依赖reactive

3.3computed

计算属性:实现的功能与Vue2的语法一致,在Vue3中只是改变语法结构

如何使用:

  1. 导入computed
  2. 执行函数完成计算过程

计算属性的缺点?

计算属性在异步请求中会出现数据不匹配的情况

计算属性的特点?

计算属性用于进行运算,避免直接修改值

3.4Watch

watch函数用于监听数据变化,可以侦听一个或多个的变化

函数参数:newVal新数据。oldVal旧数据。Immediate(立即执行),deep深度侦听

如何使用:

  1. 导入函数
  2. 调用执行函数

作为函数的第一个参数,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

如何使用:

  1. 调用工具
  2. 使用函数

组合式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&#xff1a;是Vue官方提供的脚手架之一,底层采用官方自主研发的vite,快捷&#xff0c;开发方便。 3.准备工作:系统中需要安装nodejs环境&#xff0c;在该环境中提供npm包管理器 4.创建Vue项目的命令:npm init vuela…...

数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)

1 引言 线性数据结构的元素满足唯一的线性关系&#xff0c;每个元素&#xff08;初第一个和最后一个外&#xff09;只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次关系。但是图形结构的元素之间的关系是任意的。 什么是图&#xff1f; 简单来说&…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

Python 课堂点名桌面小程序

一、场景分析 闲来无事&#xff0c;老婆说叫我开发一个课堂点名桌面小程序&#xff0c;给她在课堂随机点名学生问问题。 人生苦短&#xff0c;那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel&#xff0c;所以安装两个依赖&#xff1a; pip install openpyxl…...

【Java基础】Java中new一个对象时,JVM到底做了什么?

Java中new一个对象时&#xff0c;JVM到底做了什么&#xff1f; 在Java编程中&#xff0c;new关键字是我们创建对象的最常用方式。但你是否想过&#xff0c;当你写下new MyClass()时&#xff0c;Java虚拟机&#xff08;JVM&#xff09;到底在背后做了哪些工作&#xff1f;今天&…...

C#中的字典怎么使用?

在C#中&#xff0c;Dictionary<TKey, TValue> 是一个泛型集合类&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。它提供了快速的查找、插入和删除操作&#xff0c;适合需要根据键快速查找值的场景。以下是 Dictionary 的基本用法和常见操作&#xf…...

vue框架后遗症∶被遗忘的dom操作

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

进程 ─── linux第10课

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

线性模型 - 支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类&#xff08;和回归&#xff09;的监督学习算法&#xff0c;其主要目标是找到一个最佳决策超平面&#xff0c;将数据点分为不同的类别&#xff0c;并且使得分类边界与最近的数据点之间的间隔&#xff08;margin&#xff09…...

MyBatis-Plus注解配置:@TableName、@TableId、@TableField

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了一系列注解,用于简化数据库表与实体类之间的映射关系。以下是 @TableName、@TableId 和 @TableField 这三个常用注解的配置和使用说明。 官方文档:…...

DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案

项目场景&#xff1a; deepseek部署常用系统Ubuntu系统&#xff0c; xshell5连接Ubuntu22遇到如下问题&#xff1a; 问题描述 xshell5连接Ubuntu22遇到如下问题&#xff1a; Connecting to 172.16.46.80:22... Could not connect to 172.16.46.80 (port 22): Connection fa…...

论文阅读之基于Syn2Real域的侧扫声纳类水雷目标探测

摘要 由于现实世界数据的稀缺性&#xff0c;基于深度学习的水下水雷探测受到了限制。这种稀缺性导致过拟合&#xff0c;即模型在训练数据上表现良好&#xff0c;但在未见数据上表现不佳。本文提出了一种使用扩散模型的Syn2Real &#xff08;Synthetic to Real&#xff09;域泛…...

【Java】Tomcat日志

Tomcat日志 tomcat 日志的配置文件是tomcat目录下的/conf/logging.properties。 日志输出级别&#xff1a;SEVERE (最高级别) > WARNING > INFO > CONFIG > FINE > FINER(精心) > FINEST (所有内容,最低级别) 日志分类 tomcat 有五类日志 &#xff1a; …...

datalist 是什么?

一、datalist 是什么&#xff1f; datalist 是 HTML5 引入的一个表单相关元素&#xff0c;它本质上是一个为输入框&#xff08;<input>&#xff09;提供预定义选项列表的容器。从外观上看&#xff0c;当用户在与之关联的输入框中进行输入操作时&#xff0c;会自动弹出一个…...

初阶数据结构(C语言实现)——3顺序表和链表(3)

3.链表 3.1 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表的物理结构 1.从上图可看出&#xff0c;链式结构在逻辑上是连续的&#xff0c;但是在物理上不一定连续…...

Docker 数据卷管理及优化

Docker 数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过了容器的文件系统&#xff0c;直接将数据存储在宿主机上。通过数据卷&#xff0c;可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差&#xff…...

Hi3516CV610车牌识别算法源码之——车牌识别算法初体验

本文讲述如何使用Hi3516CV610开发板读取本地图片&#xff0c;运行车牌识别算法推理&#xff0c;得到车牌信息并打印&#xff1b; 下一篇将介绍Hi3516CV610开发板如何从sensor摄像头获取图像&#xff0c;运行车牌识别算法推理&#xff0c;得到车牌信息并打印&#xff1b; 一、准…...

使用内置命令查看笔记本电池健康状态

如何使用powercfg /batteryreport命令查看笔记本电池健康状态 在Windows系统中&#xff0c;了解笔记本电池的健康状态对于维护电脑性能和预测电池寿命至关重要。Windows 10和Windows 11系统提供了一个内置命令powercfg /batteryreport&#xff0c;可以生成一份详细的电池使用情…...

HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统

适用型号&#xff1a;【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) 链接&#xff1a;https://pan.baidu.com/s/1S6L57ADS18fnJZ1…...

transformer架构的语言模型保存的内容与格式详解

前文我们已经详细讲述了基于pytorch框架下的transformer架构如何从零开始构建一个小型字符级语言模型,构建过程中涵盖数据准备、模型架构设计、训练、评估与生成的整个流程。我们已经了解了各个部分的细节,而且已经提供了完整的python代码。现在需要了解我们构建好的模型如何…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...