「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 条件语句/循环语句

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

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

相关文章

express+mysql+vue,从零搭建一个商城管理系统10--添加商品

提示&#xff1a;学习express&#xff0c;搭建管理系统 文章目录 前言一、新建models/goods.js二、新建routes/goods.js三、添加goods表四、添加商品总结 前言 需求&#xff1a;主要学习express&#xff0c;所以先写service部分 一、新建models/goods.js models/goods.js con…

Nodejs 第四十八章(ioredis)

ioredis 是一个强大且流行的 Node.js 库&#xff0c;用于与 Redis 进行交互。Redis 是一个开源的内存数据结构存储系统。ioredis 提供了一个简单高效的 API&#xff0c;供 Node.js 应用程序与 Redis 服务器进行通信。 以下是 ioredis 的一些主要特点&#xff1a; 高性能&…

Android开发者该学习哪些东西提高竞争力,Github上最值得学习的10个Android开源项目

什么是 HTTPS? HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议。 你也可以说&#xff1a;HTTPS HTTP SSL HTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层。 为什么需要 HTTPS &#xff1f; 超文本传输协议 (…

Linux 查看硬件常用命令

lshw 显示完整的硬件信息&#xff0c;需要以管理员权限运行。 lshw lspci&#xff1a; 该命令用于列出所有连接到PCI总线的设备信息。 lspci lsusb&#xff1a; 该命令用于列出所有连接到USB总线的设备信息。 lsusb lsblk&#xff1a; 该命令用于列出块设备&#xff08;硬…

Apache Log4j 远程代码执行漏洞的终极解决方案

1.背景 最近一个老系统被检查出有Apache Log4j 远程代码执行漏洞&#xff0c;需要解决此问题&#xff0c;基于此&#xff0c;写此文章记录一下 2.问题分析 老生常谈了&#xff0c;之前发现此漏洞&#xff0c;处理方案都是升级jar包 但是&#xff0c;漏洞随着时间一直有出现&…

第三百八十三回

文章目录 1. 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了ModalBarrier组件相关的内容&#xff0c;本章回中将介绍Visibility组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的Visibility组件是一种容器类组件&#xff0c;主要…

图像质量评价指标计算python代码,PSNR,SSIM,fsim,niqe,lpips,rmse,德尔塔δe

图像质量评价指标计算python&#xff0c;PSNR&#xff0c;SSIM&#xff0c;fsim&#xff0c;niqe&#xff0c;lpips&#xff0c;rmse&#xff0c;德尔塔δe import numpy as np from skimage.metrics import structural_similarity as ssim from skimage.metrics import peak_s…

【LeetCode】第 387 场周赛

3069. 将元素分配到两个数组中 I 给你一个下标从 1 开始、包含 不同 整数的数组 nums &#xff0c;数组长度为 n 。 你需要通过 n 次操作&#xff0c;将 nums 中的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操作中&#xff0c;将 nums[1] 追加到 arr1 。在第二次操作…

SpringBoot之获取Spring容器上下文组件的工具类封装

SpringBoot之获取Spring容器上下文组件的工具类封装 文章目录 SpringBoot之获取Spring容器上下文组件的工具类封装1. SpringBoot版本2. Spring容器上下文工具类封装 如在一个普通类中获取HttpServletRequest、HttpServletResponse…等等以工具类的形式getBen,而不需要Component…

win11环境下使用hane WIN NFS Server搭建nfs服务

如题&#xff0c;服务端使用hane win nfs server&#xff0c;客户端也是使用wins系统。 S1&#xff0c;安装nfs服务器端&#xff0c;wins系列除了server系列可以使用nfs服务端&#xff0c;其余必须使用额外的组件来实现NFS文件系统的功能。 Networking Software for Windows …

系统学习Python——装饰器:直接管理函数和类

分类目录&#xff1a;《系统学习Python》总目录 在《系统学习Python——装饰器》系列文章中&#xff0c;我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型&#xff0c;但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类&#xff…

Nodejs 第四十六章(redis持久化)

redis持久化 Redis提供两种持久化方式&#xff1a; RDB&#xff08;Redis Database&#xff09;持久化&#xff1a;RDB是一种快照的形式&#xff0c;它会将内存中的数据定期保存到磁盘上。可以通过配置Redis服务器&#xff0c;设置自动触发RDB快照的条件&#xff0c;比如在指…

C#进阶高级语法之LINQ:深入分析LINQ的查询表达式、延迟执行与PLINQ高级特性

LINQ&#xff08;Language-Integrated Query&#xff09;是.NET框架的一个强大的查询语言&#xff0c;它可以用来查询各种数据源&#xff0c;如集合、数据库等。LINQ提供了许多高级特性&#xff0c;包括LINQ查询表达式、deferred execution和PLINQ&#xff08;并行LINQ&#xf…

力扣每日一题 用栈实现队列

Problem: 232. 用栈实现队列 文章目录 思路复杂度&#x1f496; 朴素版&#x1f496; 优化版 思路 &#x1f468;‍&#x1f3eb; 路飞题解 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( …

Linux系统的服务/进程

系统守护进程&#xff08;服务&#xff09; •服务就是运行在网络服务器上监听用户请求的进程 •服务是通过端口号来区分的 常见的服务及其对应的端口 1.ftp&#xff1a;21 FTP指的是文件传输协议&#xff0c;它是用于在计算机网络上进行文件传输的标准网络协议。通过FTP&am…

HTTP协议与HTTPS协议

HTTP协议 HTTP协议是一个无状态的协议&#xff0c; 服务器不维护任何有关客户端之前所发请求的消息。 是一种懒政&#xff0c;有状态协议就会更加复杂&#xff0c;需要维护状态&#xff08;历史信息&#xff09;,要是客户或者服务器失效,会产生状态不一致(状态前后不对称),解决…

【Python 常用脚本及命令系列 2.4 -- int 将字符串数字转为数值】

文章目录 Python int() 函数python 将字符串数字转为数值type 函数使用 Python int() 函数 int() 函数用于将一个字符串或数字转换为整型。 以下是 int() 方法的语法: class int(x, base10)x – 字符串或数字。base – 进制数&#xff0c;默认十进制&#xff0c;如果是16进制…

C++对象内存模型布局详解

目录 本文主要内容如下&#xff1a; 最后还有一些问题&#xff1a; 一、理解虚函数表 二、对象模型概述 三、继承下的C对象模型 单继承&#xff1a; 多继承&#xff1a; 一般的多继承&#xff08;非菱形继承&#xff09;&#xff1a; 菱形继承&#xff1a; 五、虚继承…

【牛客】VL64 时钟切换

描述 题目描述&#xff1a; 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频&#xff0c;现在要设计一个切换电路&#xff0c;sel选择时候进行切换&#xff0c;要求没有毛刺。 信号示意图&#xff1a; 波形示意图&#xff1a; 输入描述&#xff1a; clk0 clk1为时…

第四十七天| 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

Leetcode 198.打家劫舍 题目链接&#xff1a;198 打家劫舍 题干&#xff1a;你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚…