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

「Vue3系列」Vue3 组件

文章目录

  • 一、Vue3 组件
  • 二、Vue3 组件实例
  • 三、Vue3 官方组件
  • 四、Vue3 常用组件
  • 五、相关链接

一、Vue3 组件

Vue3 是 Vue.js 的最新版本,它引入了许多新的特性和改进。在 Vue3 中,组件是构建应用程序的核心部分,它们可以重用、组合和嵌套。Vue3 中的一些常用组件包括:

  1. Fragment:在 Vue2 中,每个组件必须有一个根标签,但在 Vue3 中,组件可以没有根标签,其内部会将多个标签包含在一个 Fragment 虚拟元素中。这有助于减少标签层级,使代码更简洁。
  2. Teleport(传送门):这是一个可以将组件的 HTML 结构移动到指定位置的功能。使用 <teleport> 标签可以实现这一功能,它可以将子组件渲染到 DOM 中任何位置,而不仅仅是其父组件内部。
  3. Suspense:这是一个用于处理异步组件的组件。当异步组件加载过程中,Suspense 可以渲染一些额外的内容,以提供更好的用户体验。例如,可以在异步组件加载时显示一个加载提示,当组件加载完成后再显示实际内容。

二、Vue3 组件实例

在 Vue 3 中,组件的创建和使用与 Vue 2 有一些不同,尤其是在组合式 API 的引入下。下面是一个简单的 Vue 3 组件实例代码,展示了如何创建一个名为 MyComponent 的组件,并在其中使用组合式 API:

<template><div><h1>{{ message }}</h1><button @click="incrementCount">Increment</button><p>Count: {{ count }}</p></div>
</template><script>
import { ref, computed } from 'vue';export default {name: 'MyComponent',setup() {// 使用 ref 创建响应式数据const count = ref(0);const message = ref('Hello from MyComponent!');// 使用 computed 创建计算属性const doubleCount = computed(() => count.value * 2);// 方法定义function incrementCount() {count.value++;}// 返回需要在模板中使用的数据和方法return {count,message,doubleCount,incrementCount};}
};
</script><style scoped>
h1 {color: blue;
}
</style>

在这个组件中:

  • setup 函数是 Vue 3 中引入的组合式 API 的入口点。它返回一个对象,该对象包含需要在模板中使用的响应式数据、计算属性和方法。
  • 使用 ref 创建响应式数据 countmessage。当这些值改变时,Vue 会自动更新使用这些值的模板部分。
  • 使用 computed 创建计算属性 doubleCount,它会根据 count 的值动态计算并缓存结果。
  • incrementCount 是一个方法,用于递增 count 的值。
  • 在模板中,你可以像使用普通数据一样使用这些响应式数据和计算属性。

在 Vue 3 中,组件选项(如 datacomputedmethods 等)不再是必需的,因为组合式 API 提供了一种更灵活的方式来组织和共享逻辑。不过,传统的选项 API 仍然受支持,并且可以与组合式 API 一起使用。

三、Vue3 官方组件

Vue 3 并没有直接提供“官方组件”这一概念,官方更多的是提供了构建组件所需的API和工具。但是,Vue 3 官方提供了几个核心库和插件,这些库和插件是构建Vue应用程序时常用的,并且与Vue 3紧密集成。

  1. Vue Router

Vue Router 是Vue.js的官方路由器。它与Vue深度集成,用于构建单页应用。Vue Router允许你通过定义路由来管理应用的不同视图。

安装

npm install vue-router@4

实例代码

// router.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from './views/Home.vue'
import About from './views/About.vue'const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
]const router = createRouter({history: createWebHistory(),routes, // short for `routes: routes`
})export default router

在你的Vue应用中使用路由:

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'const app = createApp(App)app.use(router)
app.mount('#app')
  1. Vuex

虽然Vuex并不是专门为Vue 3设计的(它有一个与Vue 3兼容的版本),但Vuex仍然是Vue应用程序状态管理的流行选择。

安装

npm install vuex@next

实例代码

// store.js
import { createStore } from 'vuex'export default createStore({state: {count: 0},mutations: {increment(state) {state.count++}}
})

在你的Vue应用中使用Vuex:

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import store from './store'const app = createApp(App)app.use(store)
app.mount('#app')

在组件中使用Vuex状态:

<template><div><p>{{ count }}</p><button @click="incrementCount">Increment</button></div>
</template><script>
import { computed } from 'vue'
import { useStore } from 'vuex'export default {setup() {const store = useStore()const count = computed(() => store.state.count)function incrementCount() {store.commit('increment')}return {count,incrementCount}}
}
</script>

Vue 3 的生态系统还包含了许多第三方库和组件,如UI库(如Vuetify、Element Plus、Quasar等)、工具库(如Vuex、Vue Router、axios等)和插件,这些都可以帮助开发者更高效地构建Vue应用程序。

四、Vue3 常用组件

Vue 3 本身并不直接提供“常用组件”,但生态系统中有很多流行的组件库,如 Vuetify、Element Plus、Ant Design Vue 等。这些库为开发者提供了丰富的 UI 组件,如按钮、输入框、表格、对话框等。

以下是一个使用 Vue 3 和 Element Plus(一个基于 Vue 3 的组件库)的简单实例代码。这个例子展示了如何使用 Element Plus 中的 el-buttonel-input 组件。

首先,确保你已经安装了 Element Plus:

npm install element-plus --save

然后,在你的 Vue 3 项目中引入 Element Plus 和它的样式:

// main.js
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
import App from './App.vue'const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

现在,你可以在任何 Vue 组件中使用 Element Plus 提供的组件了。以下是一个简单的组件实例,其中包含了一个按钮和一个输入框:

<template><div><el-input v-model="inputValue" placeholder="请输入内容"></el-input><el-button @click="handleButtonClick">点击我</el-button></div>
</template><script>
import { ref } from 'vue'export default {setup() {const inputValue = ref('')function handleButtonClick() {alert(`你输入的内容是: ${inputValue.value}`)}return {inputValue,handleButtonClick}}
}
</script>

在这个例子中,我们使用了 Vue 3 的组合式 API (setup 函数) 来定义组件的逻辑。我们创建了一个响应式的 inputValue 变量来绑定到 el-input 组件上,并且定义了一个 handleButtonClick 方法来处理按钮的点击事件。

请注意,不同的组件库可能有不同的安装和使用方式,因此请务必查阅相应组件库的文档以获取最准确的信息。

此外,Vue 3 还支持使用 <script setup> 语法糖,这是一种更简洁的方式来编写组件逻辑,特别是对于使用组合式 API 的场景。以下是一个使用 <script setup> 的相同组件示例:

<template><div><el-input v-model="inputValue" placeholder="请输入内容"></el-input><el-button @click="handleButtonClick">点击我</el-button></div>
</template><script setup>
import { ref } from 'vue'const inputValue = ref('')const handleButtonClick = () => {alert(`你输入的内容是: ${inputValue.value}`)
}
</script>

在这个 <script setup> 示例中,我们不需要显式地导出任何东西,因为所有在 <script setup> 中定义的变量和方法都会自动暴露给模板。

五、相关链接

  1. Vue3官方地址
  2. Vue3中文文档
  3. 「Vue3系列」Vue3简介及安装
  4. 「Vue3系列」Vue3起步/创建项目
  5. 「Vue3系列」Vue3指令
  6. 「Vue3系列」Vue3 模板语法
  7. 「Vue3系列」Vue3 条件语句/循环语句

相关文章:

「Vue3系列」Vue3 组件

文章目录 一、Vue3 组件二、Vue3 组件实例三、Vue3 官方组件四、Vue3 常用组件五、相关链接 一、Vue3 组件 Vue3 是 Vue.js 的最新版本&#xff0c;它引入了许多新的特性和改进。在 Vue3 中&#xff0c;组件是构建应用程序的核心部分&#xff0c;它们可以重用、组合和嵌套。Vu…...

Git实战(2)

git work flow ------------------------------------------------------- ---------------------------------------------------------------- 场景问题及处理 问题1&#xff1a;最近提交了 a,b,c,d记录&#xff0c;想把b记录删掉其他提交记录保留&#xff1a; git reset …...

Java ElasticSearch-Linux面试题

Java ElasticSearch-Linux面试题 前言1、守护线程的作用&#xff1f;2、链路追踪Skywalking用过吗&#xff1f;3、你对G1收集器了解吗&#xff1f;4、你们项目用的什么垃圾收集器&#xff1f;5、内存溢出和内存泄露的区别&#xff1f;6、什么是Spring Cloud Bus&#xff1f;7、…...

微信小程序通过服务器控制ESP8266

声明 本文实现了ESP8266、微信小程序、个人服务器三者互相通信,并且小程序能发消息给微信用户 本文所有代码和步骤均为亲测有效 以下代码均为从网上搜索到后本人加以改动的,并非完全原创,若作者希望删除可联系我 ESP8266与个人服务器通信 ESP8266配置 通过串口通信使用…...

题目 1434: 蓝桥杯历届试题-回文数字

题目描述: 观察数字&#xff1a;12321&#xff0c;123321 都有一个共同的特征&#xff0c;无论从左到右读还是从右向左读&#xff0c;都是相同的。这样的数字叫做&#xff1a;回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求&#xff1a; 该数字的各个数位…...

访问修饰符、Object(方法,使用、equals)、查看equals底层、final--学习JavaEE的day15

day15 一、访问修饰符 含义&#xff1a; 修饰类、方法、属性&#xff0c;定义使用的范围 理解&#xff1a;给类、方法、属性定义访问权限的关键字 注意&#xff1a; ​ 1.修饰类只能使用public和默认的访问权限 ​ 2.修饰方法和属性可以使用所有的访问权限 访问修饰符本类本包…...

『大模型笔记』最大化大语言模型(LLM)的性能(来自OpenAI DevDay 会议)

最大化大语言模型(LLM)的性能(来自OpenAI DevDay 会议) 文章目录 一. 内容介绍1.1. 优化的两个方向(上下文优化和LLM优化)1.2. 提示工程:从哪里开始1.3. 检索增强生成:拓展知识边界1.4. 微调:专属定制二. 参考文献一. 内容介绍 简述如何以可扩展的方式把大语言模型(LLMs)…...

深度学习:开启你的AI探索之旅

在这个信息爆炸的时代,人工智能(AI)已经渗透到我们生活的方方面面,从智能语音助手到自动驾驶汽车,从智能推荐系统到医疗影像诊断,AI的身影无处不在。而深度学习,作为AI领域的一大核心技术,更是引领着这场科技革命的浪潮。那么,如何入门深度学习,踏上这趟充满挑战与机…...

第十四届蓝桥杯大赛B组 JAVA 蜗牛 (递归剪枝)

题目描述&#xff1a; 这天&#xff0c;一只蜗牛来到了二维坐标系的原点。 在 x 轴上长有 n 根竹竿。它们平行于 y 轴&#xff0c;底部纵坐标为 0&#xff0c;横坐标分别为 x1, x2, …, xn。竹竿的高度均为无限高&#xff0c;宽度可忽略。蜗牛想要从原点走到第 n 个竹竿的底部也…...

基于React低代码平台开发:构建高效、灵活的应用新范式

文章目录 一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践&#xff1a;基于React》编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书 随着数字化转型的深入&…...

在Linux部署Docker并上传静态资源(快速教程)

Nginx快速上手 安装必要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2设置Docker仓库 通过以下命令添加Docker的官方仓库到yum源中&#xff1a; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo安装Dock…...

【场景测试用例】带有广告图案的纸杯

从以下几个纬度出发考虑&#xff1a; 功能 是否可以承载液体&#xff0c;热水&#xff0c;温水&#xff0c;冰水是否可以承载非液体类的物品容量&#xff0c;空杯&#xff0c;半杯&#xff0c;满杯 UI 广告图案设计是否合理 性能 最大承受的容量内不漏水(负载测试)最大承受的温…...

《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…...

MyBatisPlus(SpringBoot版)的分页插件

目录 一、前置工作: 1.整体项目目录结构 2.创建普通javamaven项目。 3.导入依赖&#xff0c;改造成springboot项目 4.配置启动类 5.创建service接口及其实现类 6.创建接口Mapper 7.配置数据源 8.创建数据库表 二、使用MP&#xff08;mybatisplus&#xff09;的分页插件 二、使…...

【小沐学QT】QT学习之信号槽使用

文章目录 1、简介2、代码实现2.1 界面菜单“转到槽”方法2.2 界面信号槽编辑器方法2.3 QT4.0的绑定方法2.4 QT5.0之后的绑定方法2.5 C11的方法2.6 lamda表达式方法2.7 QSignalMapper方法 结语 1、简介 在GUI编程中&#xff0c;当我们更改一个小部件时&#xff0c;我们通常希望…...

SpringMVC总结

SpringMVC SpringMVC是隶属于Spring框架的一部分&#xff0c;主要是用来进行Web开发&#xff0c;是对Servlet进行了封装。 对于SpringMVC我们主要学习如下内容: SpringMVC简介 请求与响应 REST风格 SSM整合(注解版) 拦截器 SpringMVC是处理Web层/表现层的框架&#xff…...

JS一些重要函数

防抖函数 避免短时间内的函数多次调用影响性能 function debounce(func , wait){let timer;return (...args) > {clearTimeout(timer);timer setTimeout(() > {return func(args)} , wait)} } 函数柯里化 将多参函数以单参的形式传递 function curry(fn){return func…...

基于视觉识别的自动采摘机器人设计与实现

一、前言 1.1 项目介绍 【1】项目功能介绍 随着科技的进步和农业现代化的发展&#xff0c;农业生产效率与质量的提升成为重要的研究对象。其中&#xff0c;果蔬采摘环节在很大程度上影响着整个产业链的效益。传统的手工采摘方式不仅劳动强度大、效率低下&#xff0c;而且在劳…...

算法D32 | 贪心算法2 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

122.买卖股票的最佳时机II 本题解法很巧妙&#xff0c;大家可以看题思考一下&#xff0c;在看题解。 代码随想录P 只收集每天的正利润&#xff0c;利润可以每天分解。 Python: class Solution:def maxProfit(self, prices: List[int]) -> int:if len(prices)<2: retur…...

【iOS ARKit】协作 Session 实例

协作 Session 使用注意事项 协作 Session 是在 ARWorldMap 基础上发展起来的技术&#xff0c;ARWorldMap 包含了一系列的地标、ARAnchor 及在观察这些地标和 ARAnchor 时摄像机的视场&#xff08;View&#xff09;。如果用户在某一个位置新创建了一个 ARAnchor&#xff0c;这时…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...