新闻详情

新闻详情

首页 / 资讯中心 / 详情

Vue 组件基础实战:从通信原理到综合应用

发布时间:2026/9/30 3:10:04来源:尧图网络
Vue 组件基础实战:从通信原理到综合应用
Vue 组件基础实战从通信原理到综合应用标签vue3前端组件化propsemit简介本文结合 Vue3 单文件组件讲解组件核心概念、项目搭建、父子组件通信原理附带完整可运行案例适合前端初学者学习。Vue组件基础实战从通信原理到综合应用一、组件是什么组件是Vue开发的核心思想组件就是页面上独立、可复用的一块UI和逻辑。Vue3使用单文件组件SFC后缀名为.vue一个文件分为三部分template编写页面结构htmlscript setup编写业务逻辑jsVue3推荐setup语法糖style编写样式添加scoped可以实现样式隔离不会污染其他组件配图1VSCode项目目录截图展示src/components文件夹体现组件文件存放位置。组件化开发优势复用相同UI多处页面直接引用不用重复写代码易维护每个组件只负责自己这一块功能修改不影响其他页面便于分工多人协作可以分开开发不同组件二、Vue3项目创建过程使用官方脚手架 create-vue 创建项目终端输入命令npmcreate vuelatest 项目配置选项 - 项目名称my-app-vue - 是否使用 TypeScript否 - 是否使用 JSX否 - 是否添加 Vue Router是 - 是否添加 Pinia 状态管理是 - 测试框架否 - Prettier 代码格式化是 - 试验特性全部不勾选 - 是否跳过示例代码No保留示例方便学习 项目生成完成依次执行命令安装依赖并启动项目cdmy-app-vuenpminstallnpmrun dev 浏览器访问http://localhost:5173/项目启动成功。## 三、实战案例父子组件通信组件之间最常用两种通信方式1. props父组件 → 子组件向下传递数据单向数据流2. emit 自定义事件子组件 → 父组件向上传递数据1. 创建子组件 src/components/CardDemo.vuetemplatedivclasscardh2{{cardTitle}}/h2p{{cardDesc}}/pbutton clicksendMsg向父组件发送消息/button/div/templatescript setup// 接收父组件传过来的数据 const propsdefineProps({cardTitle: String, cardDesc: String})// 声明自定义事件用于向父组件传值 const emitdefineEmits([childSend])const sendMsg(){// 触发事件携带参数传给父组件 emit(childSend,子组件我是来自卡片组件的消息)}/scriptstyle scoped.card{border: 1px solid#42b983;padding: 20px;border-radius:10px;width:350px;}/style2. 父组件 src/App.vue引入并使用 CardDemo 子组件templatedivclassapph1父组件页面/h1!-- 使用子组件props传值监听子组件自定义事件 --CardDemocardTitleVue组件学习cardDesc父子通信案例演示childSendreceiveMsg/pstylemargin-top:20px;收到子组件消息{{message}}/p/div/templatescript setup// 导入子组件importCardDemo from./components/CardDemo.vueimport{ref}fromvue// 定义变量接收子组件传来的数据 const messageref(暂无消息)const receiveMsg(val){message.valueval}/scriptstyle.app{padding:30px;}/style配图2浏览器页面运行截图。页面展示卡片组件点击按钮后下方文字更新演示通信效果。## 四、核心知识点讲解1. props父传子 父组件在组件标签上写自定义属性子组件通过defineProps接收。 ⚠️ 单向数据流原则**子组件不能直接修改 props 里面的值**只能读取。如果需要修改要复制到子组件本地变量。2. emit 自定义事件子传父 子组件先用defineEmits声明事件名称调用emit(事件名,参数)发送数据 父组件通过事件名监听拿到子组件传递过来的数据。3. style scoped 加上scoped后样式只作用于当前组件内部 DOM。底层原理Vue 自动给 DOM 添加唯一属性CSS 增加属性选择器防止全局样式互相污染。## 五、开发常见问题1. 使用组件前必须import导入否则页面报错找不到组件2. props 不能直接修改是单向数据流3. scoped 只能隔离样式父组件样式无法直接修改子组件内部元素4. emit 事件名称建议使用小驼峰或者短横线命名保持统一规范## 六、总结组件化是 Vue 最重要的思想。本次实战掌握了单文件组件结构、项目搭建、父子组件通信的两种基础方式 props 和 emit。理解组件通信就可以拆分页面搭建出结构清晰、可复用的前端页面。后续可以继续学习插槽 slot、组件生命周期等进阶知识。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

dxgi.dll丢失找不到?系统修复与驱动重装全流程指南 2026/9/30 11:11:12

dxgi.dll丢失找不到?系统修复与驱动重装全流程指南

最近一个月我至少接到三次类似的咨询——都是打开某个程序,突然弹出“由于找不到dxgi.dll,无法继续执行代码”,然后电脑在那一刻就“瞎了”:游戏进不去,设计软件打不开,甚至隔壁同事的CAD也罢工。多数人第一…

阅读更多 →
233乐园客服咨询AI流量赋能,233乐园科技重塑智能体验新标杆 2026/9/30 11:11:12

233乐园客服咨询AI流量赋能,233乐园科技重塑智能体验新标杆

近期,由湖南改变生物科技有限公司主办、本因内酵未徕品牌协办的“生物科技健康论坛暨AI赋能大健康产业启动会”在长沙市步步高福鹏喜来登酒店隆重举行。活动以“AI流量赋能实体破局——中小企业增长峰会”为主题,汇聚全国大健康行业专家、中小企业负责人、机构代表及…

阅读更多 →
oracle sql优化随笔1 2026/9/30 11:11:11

oracle sql优化随笔1

原始语句:SELECT T1.I_CODE, T1.M_TYPE, T1.A_TYPE, T1.D_CODE, 0 AS B_TYPE FROM XIR_MD.TBND T1 WHERE T1.I_CODE NOT LIKE UL% AND T1.B_MTR_DATE >2026-09-12 AND T1.IMP_TIME > 2026-09-22 03:05:39 UNION SELECT B.I_CODE, B.M_TYPE, B.A_TYPE, AS…

阅读更多 →
SpringBoot+Vue+MyBatis多媒体素材管理系统前后端分离实战 2026/9/30 11:11:04

SpringBoot+Vue+MyBatis多媒体素材管理系统前后端分离实战

在多媒体生产、线上培训、设计协作这类业务里,素材两字最容易被低估。图片散落在聊天记录和各个网盘链接里,视频存在同事的移动硬盘上,想找某个版本的设计稿得问遍整个部门。我最近完整落地了一套前后端分离的多媒体素材管理系统,…

阅读更多 →
匿名用户登录后的事件去重方案 2026/9/30 11:10:58

匿名用户登录后的事件去重方案

直答:登录事件触发用户数比注册用户数高出三成,多半是匿名ID和登录ID没做关联,同一个人被算成了两个访客。登录时调 userset 设置用户属性、前端记录匿名ID映射,UV虚高和漏斗断裂就能解决。做内容类站点的团队多半遇到过&#xff…

阅读更多 →
股票复盘工具StockCalendar使用有感 2026/9/30 11:10:58

股票复盘工具StockCalendar使用有感

人近中年,也没其他手艺,打算学习下炒股。使用券商App时发现查看持仓、收益这些都挺方便,但就是跟踪策略,回顾策略。尤其是依据某种策略查看股票的操作,或者某只股票的持续生命周期跟踪没有很好的支持。在网络上到处搜罗…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉