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

Vue.js组件开发详解

在现代前端开发中,Vue.js 凭借其简洁、高效、灵活的特性,成为了众多开发者的首选框架之一,而组件化开发则是 Vue.js 的核心优势。组件可以将复杂的 UI 界面拆分成一个个独立的、可复用的小块,极大地提高了开发效率和代码的可维护性。

一、组件基础概念

组件是 Vue.js 应用的基本构建块,每个组件都有自己的模板(template)、数据(data)、方法(methods)、生命周期钩子等。模板定义了组件的结构,数据驱动着模板的渲染,方法处理组件内的交互逻辑,生命周期钩子则让组件能在不同阶段执行特定操作。

例如,一个简单的按钮组件:

<template><button @click="handleClick">{{ buttonText }}</button>
</template><script>
export default {data() {return {buttonText: '点击我'};},methods: {handleClick() {alert('按钮被点击了');}}
};
</script>

这里定义了一个按钮组件,它有一个文本数据 buttonText,点击按钮时会触发 handleClick 方法弹出提示框。

二、组件的注册与使用

Vue.js 中组件有两种注册方式:全局注册和局部注册。

全局注册使得组件可以在应用的任何地方使用,通常在 main.js 中进行:

 
import Vue from 'vue';
import ButtonComponent from './components/ButtonComponent.vue';Vue.component('my-button', ButtonComponent);new Vue({el: '#app'
});

之后在任何 Vue 实例或组件模板中,都能用 <my-button> 标签来调用该按钮组件。

局部注册则是在某个组件内部注册另一个组件,仅限该组件内部及其子组件使用:


<template><div><my-sub-component></my-sub-component></div></template><script>import MySubComponent from './MySubComponent.vue';export default {components: {'my-sub-component': MySubComponent}};</script>

三、组件通信

组件之间往往需要传递数据或触发事件,常见的通信方式有:

  1. 父子组件通信:
<template><child-component :message="parentMessage"></child-component></template><script>import ChildComponent from './ChildComponent.vue';export default {data() {return {parentMessage: '来自父组件的消息'};},components: {ChildComponent}};</script>

子组件:

<template><p>{{ message }}</p></template><script>export default {props: ['message']};</script><template><button @click="sendDataToParent">向父组件传值</button></template><script>export default {methods: {sendDataToParent() {this.$emit('data-from-child', '子组件的数据');}}};</script>

父组件:

<template><child-component @data-from-child="handleChildData"></child-component></template><script>import ChildComponent from './ChildComponent.vue';export default {methods: {handleChildData(data) {console.log(data);}},components: {ChildComponent}};</script>
    • 父组件向子组件传值:通过 props。父组件在使用子组件时,绑定属性传递数据,子组件通过 props 接收。

例如:

父组件:

    • 子组件向父组件传值:通过自定义事件。子组件使用 $emit 触发事件并传递数据,父组件监听该事件接收数据。

例如:

子组件:

  1. 非父子组件通信:可以使用 Vuex(状态管理库),它提供了一个全局的状态树,组件可以提交 mutations 来修改状态,通过 getters 获取状态,实现跨组件的数据共享与通信。

四、组件的生命周期

Vue.js 组件有一系列生命周期钩子函数,如 created、mounted、updated、destroyed 等。

  • created:在组件实例创建完成后立即调用,此时数据观测、事件配置等都已完成,但模板尚未渲染。常用于初始化数据。
  • mounted:组件挂载到 DOM 元素后调用,此时可以访问到真实的 DOM 元素,常用于执行需要 DOM 操作的代码,如获取元素尺寸、添加第三方库的初始化等。
  • updated:组件数据更新导致虚拟 DOM 重新渲染和打补丁后调用,要注意避免在这个钩子中进行可能导致无限循环更新的数据修改。
  • destroyed:组件实例销毁之前调用,用于清理定时器、解绑事件监听器等资源释放操作。

理解并合理运用组件的生命周期钩子,能确保组件在各个阶段正确执行任务,优化性能。

总之,掌握 Vue.js 组件开发是构建高效、健壮前端应用的关键,通过深入学习组件的创建、注册、通信以及生命周期等方面,开发者能够充分发挥 Vue.js 的优势,打造出优质的用户界面。

相关文章:

Vue.js组件开发详解

在现代前端开发中&#xff0c;Vue.js 凭借其简洁、高效、灵活的特性&#xff0c;成为了众多开发者的首选框架之一&#xff0c;而组件化开发则是 Vue.js 的核心优势。组件可以将复杂的 UI 界面拆分成一个个独立的、可复用的小块&#xff0c;极大地提高了开发效率和代码的可维护性…...

解决:ubuntu22.04中IsaacGymEnv保存视频报错的问题

1. IsaacGymEnvs项目介绍 IsaacGymEnvs&#xff1a;基于NVIDIA Isaac Gym的高效机器人训练环境 IsaacGymEnvs 是一个基于 NVIDIA Isaac Gym 的开源 Python 环境库&#xff0c;专为机器人训练提供高效的仿真环境。Isaac Gym 是由 NVIDIA 开发的一个高性能物理仿真引擎&#xf…...

深度学习camp-第J7周:对于ResNeXt-50算法的思考

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 &#x1f4cc;你需要解决的疑问&#xff1a;这个代码是否有错&#xff1f;对错与否都请给出你的思考 &#x1f4cc;打卡要求&#xff1a;请查找相关资料、逐步…...

java: 错误: 无效的源发行版:17解决办法

遇到“java: 错误: 无效的源发行版&#xff1a;17”的问题&#xff0c;通常是因为项目设置中指定的Java版本与当前环境不一致导致的。以下是几种可能的解决方案&#xff1a; 检查并升级Java版本&#xff1a;确保你已经安装了支持Java 17的JDK版本。你可以通过命令行输入java -v…...

Docker 安装开源的IT资产管理系统Snipe-IT

一、安装 1、创建docker-compose.yaml version: 3services:snipeit:container_name: snipeitimage: snipe/snipe-it:v6.1.2restart: alwaysports:- "8000:80"volumes:- ./logs:/var/www/html/storage/logsdepends_on:- mysqlenv_file:- .env.dockernetworks:- snip…...

Go语言封装加解密包(AES/DES/RSA)

Go语言封装加解密包&#xff08;AES/DES/RSA&#xff09; 1. Base64编码与解码2. AES加解密3. DES加解密4. RSA加解密5. SHA256哈希6. 单元测试1. AES加解密单元测试2. DES加解密单元测试3. RSA加解密单元测试4. SHA256哈希单元测试测试用例说明 总结 在现代软件开发中&#xf…...

sql server 对 nvarchar 类型的列进行 SUM() 运算

因为 SUM() 是一个数值聚合函数&#xff0c;不能直接应用于字符串类型的数据。为了正确汇总标准数量&#xff0c;你需要确保该列的数据类型是数值类型&#xff0c;如 int、decimal 或 float。 假设要统计数量列的和&#xff0c;由于数量列是 nvarchar 类型&#xff0c;你需要先…...

java中json字符串键值获取

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency>使用fastjson依赖 JSONObject jsonObject JSON.parseObject(s); 这个jsonObject本质就是一个map&…...

MPLS原理及配置

赶时间可以只看实验部分 由来&#xff1a;90年代中期&#xff0c;互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发&#xff0c;但由于硬件技术存在限制导致转发性能低&#xff0c;查表转发成为了网络数据转发的瓶颈。 因此&#xff0c;旨在提高路由器转发速度的MPL…...

口碑很好的国产LDO芯片,有哪些?

在几乎任何一个电路设计中&#xff0c;都可能会使用LDO&#xff08;低压差线性稳压器&#xff09;这个器件。 虽然LDO不是什么高性能的IC&#xff0c;但LDO芯片市场竞争异常激烈。最近几年&#xff0c;诞生了越来越多的精品国产LDO&#xff0c;让人看得眼花缭乱。 业内人士曾经…...

【流程设计】类似钉钉的流程设计功能样式demo

对于一些审批流程&#xff0c;可能会用到这个功能&#xff0c;通过这样一层层的加下来&#xff0c;弄一个审批流程的数组&#xff0c;然后根据这个来审核是否都通过审批&#xff0c;这里是简单的弄一个样式的demo&#xff0c;功能自由发挥 <!DOCTYPE html> <html>…...

ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列

文章目录 0. 首先聊聊什么是RNN1. 理解LSTM&#xff0c;从数据如何喂给 LSTM开始2. LSTM每个门是如何处理序列数据的&#xff1f;2.1 遗忘门&#xff08;Forget Gate&#xff09;&#xff1a;该忘掉哪些信息&#xff1f;2.2 输入门&#xff08;Input Gate&#xff09;&#xff…...

测试开发之面试宝典

目录 session和cookie的区别 session和cookie的区别 1.session和cookie都是鍵值对应的 2.session和cookie都是服务器生成的&#xff0c;session的ID&#xff0c;即服各器用来识别读取session对象的一把钥匙 3.session是保存在服各器端&#xff0c;而cookie是返回給客戶端的&…...

399. 除法求值【 力扣(LeetCode) 】

文章目录 零、LeetCode 原题一、题目描述二、测试用例三、解题思路3.1 图的路径搜索3.2 路径压缩 四、参考代码4.1 图的路径搜索4.2 路径压缩 零、LeetCode 原题 399. 除法求值 一、题目描述 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;…...

算法日记1:洛谷p2678跳石头(二分答案)

1、题目 二、题解&#xff1a; 2.1解题思路: 1.题目要求求出最小值最大&#xff0c;明显的二分答案题目&#xff0c;所以我们可以二分可以跳跃距离int l-1,rL1; 2.此时我们思考lmid和rmid的处理,当我们的check(mid)为true时候 表明我们此时的mid是符合要求的&#xff0c; 那么…...

Unity shader中真的可以动态关闭Stencil Test吗?

这个问题很多年前就有人问了&#xff1a; https://discussions.unity.com/t/how-to-disable-the-stencil-block-via-shader-properties/600273/1 最后的答案是&#xff1a; set [_StencilComp] to CompareFunction.Disabled to disable the Stencil Op completely. 但是我测试…...

YOLOv9改进,YOLOv9自研检测头融合HyCTAS的Self_Attention自注意力机制,2024,适合目标检测、分割任务

摘要 论文提出了一种新的搜索框架,名为 HyCTAS,用于在给定任务中自动搜索高效的神经网络架构。HyCTAS框架结合了高分辨率表示和自注意力机制,通过多目标优化搜索,找到了一种在性能和计算效率之间的平衡。 # 理论介绍 自注意力(Self-Attention)机制是HyCTAS框架中的一个…...

计算机网络 (36)TCP可靠传输的实现

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过多种机制实现可靠传输&#xff0c;这些机制主要包括连接管理、序列号和确认应答机制、重传机制、流量控制、拥塞控制等。 一、连接管理 TCP使用三次握手&#xff0…...

Git版本控制 - 创建使用Repository

Git版本控制 – 创建使用Repository Version Control with Git - Create and Use Repository By JacksonML 上文提到&#xff0c;Git是一种分布式版本控制系统。作为全球范围内广泛使用的工具&#xff0c;如何将项目分步骤运用到其中呢&#xff1f; 本文简要介绍如何用Git工…...

MySQL —— 在CentOS9下安装MySQL

MySQL —— 在CentOS9下安装MySQL 1.查看自己操作系统的版本2.找到对应的安装源3.上传我们在windows下&#xff0c;下载的文件&#xff0c;解压4.执行rpm命令&#xff0c;启用MySQL8仓库5.执行dnf install -y mysql-community-server6.设置开机自启动7.获得初始密码8.登录MySQL…...

保姆级教程:用Arduino模拟LIN总线主从通信,手把手调试车窗控制

用Arduino打造LIN总线车窗控制系统&#xff1a;从硬件搭建到防夹算法实现 LIN总线作为汽车电子中的"轻量级选手"&#xff0c;在车门控制、座椅调节等场景中扮演着关键角色。相比动辄上千元的专业开发工具&#xff0c;用Arduino模拟LIN总线通信不仅成本可控&#xff0…...

低空智联网:构建未来空中信息高速公路的架构蓝图

1. 低空智联网&#xff1a;重新定义空中信息高速公路 想象一下这样的场景&#xff1a;数百架无人机在城市上空有序穿梭&#xff0c;有的在配送快递&#xff0c;有的在监测空气质量&#xff0c;还有的在执行紧急救援任务。它们彼此之间能够实时通信&#xff0c;自动避让&#xf…...

轻松搞定Excel公式错误:SpreadJS让表格开发不再头疼

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

从‘汉宁窗’到‘凯泽窗’:手把手教你用Python SciPy为你的音频降噪项目挑选最合适的FIR窗函数

从‘汉宁窗’到‘凯泽窗’&#xff1a;Python SciPy窗函数在音频降噪中的实战选择指南 当一段珍贵的录音被50Hz工频噪声污染时&#xff0c;我们面临的不仅是技术问题&#xff0c;更是艺术与科学的平衡。窗函数作为FIR滤波器设计中的关键参数&#xff0c;直接影响着滤波器在频率…...

小步快跑・像CPU一样调度大脑高并发——东方仙盟・阿雪心学

从时间切片到任务切换&#xff0c;构建不颠簸、高效率的思维架构为什么我们这代人要学会 “思维切换”&#xff1f;过去的时代&#xff0c;掌握一门技术、吃透一个领域&#xff0c;就能安稳过一生。但现在不一样了。知识不再稀缺&#xff0c;技术随处可查&#xff0c;信息随手可…...

【教程4>第12章>第8节】基于FPGA的图像缩放实现——图像横向压缩仿真测试以及MATLAB辅助验证

本课程学习成果预览 目录 1.软件版本 2.图像横向压缩testbench编写 3.仿真测试 4.程序操作视频 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合开发入门与…...

2026届毕业生推荐的六大降重复率神器推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于人工智能产出内容越来越普遍的当前状况&#xff0c;文本里常常出现的模式化表达形态&…...

漏洞挖掘变现指南:合法渠道\+赏金技巧,新手也能月入过万

很多新手学习漏洞挖掘&#xff0c;不仅是为了提升技术&#xff0c;更是为了实现“技术变现”——通过提交漏洞获取赏金、兼职接单&#xff0c;这也是网络安全领域的核心福利之一。但变现的前提是“合法合规”&#xff0c;本文拆解漏洞挖掘的合法变现渠道、赏金提升技巧、避坑指…...

图书管理系统(增删改查,附源码,包含数据库交互以及图形化界面)

前言&#xff1a;本文旨在用面向对象的思想编程实现图书管理系统&#xff0c;功能包括增删改查&#xff0c;完整源码放在文末&#xff0c;大家有需自取&#xff0c;一共3个版本&#xff1a; 1.0版本&#xff1a;基础的Java单机程序2.0版本&#xff1a;提供了web图形化页面&…...

Qt Windows自定义GUI界面自动化测试——uiautomatio通过树节点属性定位控件

Qt Windows自定义GUI界面自动化测试 提示&#xff1a;点击链接跳转其他相关文章 Windows自定义GUI界面自动化测试框架选择 autoit uiautomatio基本使用 uiautomatio通过树节点属性定位控件 uiautomatio通过树节点属性定位控件Qt Windows自定义GUI界面自动化测试前言一、实现方式…...