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

【Vue2 ✨】 Vue2 入门之旅(五):组件化开发

前几篇文章中我们学习了 Vue 的基础语法和生命周期。本篇将进入 组件化开发,这是 Vue 的核心思想之一。通过组件,我们可以让页面结构更清晰、代码更易维护。


目录

  1. 什么是组件
  2. 组件注册方式
    • 全局注册
    • 局部注册
  3. 父子组件通信
    • props
    • $emit
  4. 插槽
    • 默认插槽
    • 具名插槽
    • 作用域插槽
  5. 小结

什么是组件

组件是 Vue 的核心概念,可以理解为一个 可复用的 UI 模块
一个组件包含:模板、逻辑、样式。

例子:页面上有“头部”“内容区”“底部”,我们可以把它们写成独立组件。


组件注册方式

全局注册

通过 Vue.component 注册的组件,可以在所有实例中使用。

<div id="app"><my-component></my-component>
</div><script>
Vue.component('my-component', {template: '<p>我是全局组件</p>'
})new Vue({el: '#app'
})
</script>

局部注册

在某个 Vue 实例或组件内部注册,只能在该作用域中使用。

<div id="app"><local-comp></local-comp>
</div><script>
var LocalComp = {template: '<p>我是局部组件</p>'
}new Vue({el: '#app',components: {'local-comp': LocalComp}
})
</script>

父子组件通信

props 父传子

父组件通过 props 给子组件传递数据。

<div id="app"><child-comp :msg="parentMsg"></child-comp>
</div><script>
Vue.component('child-comp', {props: ['msg'],template: '<p>子组件收到:{{ msg }}</p>'
})new Vue({el: '#app',data: {parentMsg: '来自父组件的数据'}
})
</script>

$emit 子传父

子组件通过 $emit 向父组件发送事件。

<div id="app"><child-comp @child-click="handleChild"></child-comp>
</div><script>
Vue.component('child-comp', {template: '<button @click="$emit(\'child-click\')">点我</button>'
})new Vue({el: '#app',methods: {handleChild: function () {alert('父组件收到了子组件的事件!')}}
})
</script>

插槽

插槽(slot)用于让父组件向子组件插入内容。

默认插槽

<child-comp>这是插槽内容</child-comp><script>
Vue.component('child-comp', {template: '<div><slot></slot></div>'
})
</script>

具名插槽

<child-comp><template v-slot:header>这里是头部</template><template v-slot:footer>这里是底部</template>
</child-comp><script>
Vue.component('child-comp', {template: `<div><header><slot name="header"></slot></header><main>内容区域</main><footer><slot name="footer"></slot></footer></div>`
})
</script>

作用域插槽

子组件向插槽暴露数据,父组件决定如何渲染。

<list-comp :items="list"><template v-slot:default="slotProps"><p>{{ slotProps.item.text }}</p></template>
</list-comp><script>
Vue.component('list-comp', {props: ['items'],template: `<div><slot v-for="item in items" :item="item"></slot></div>`
})new Vue({el: '#app',data: {list: [{ text: '苹果' }, { text: '香蕉' }]}
})
</script>

小结

  1. 组件是 Vue 的核心,方便复用和维护。
  2. 注册方式分为 全局注册局部注册
  3. 父子通信:父传子用 props,子传父用 $emit
  4. 插槽提供更灵活的内容分发方式:默认插槽、具名插槽、作用域插槽。

📚下一篇文章,我们将学习 指令与过滤器,让模板更灵活。


文章转载自:

http://p1SCnWpX.txfxy.cn
http://RHB4USYv.txfxy.cn
http://divhQmvK.txfxy.cn
http://eyvKbRwW.txfxy.cn
http://voErwIAp.txfxy.cn
http://WMbIogRL.txfxy.cn
http://PMMuKdQV.txfxy.cn
http://Kgs4SS0P.txfxy.cn
http://xLXZNmc3.txfxy.cn
http://pBj67JM7.txfxy.cn
http://4IvZuUyh.txfxy.cn
http://SSrCrPso.txfxy.cn
http://yxmj6L2U.txfxy.cn
http://Zt9PMOzp.txfxy.cn
http://c6XLp7sG.txfxy.cn
http://c91fLHzk.txfxy.cn
http://sApNmxYb.txfxy.cn
http://na1RqyqV.txfxy.cn
http://UK8V5PWp.txfxy.cn
http://oTKVpv84.txfxy.cn
http://h6eOK74Y.txfxy.cn
http://lYDft8Mi.txfxy.cn
http://wXuWg7or.txfxy.cn
http://QAOLnHXj.txfxy.cn
http://Hwe5nqkn.txfxy.cn
http://dGVIR4Rp.txfxy.cn
http://hvWSMpSj.txfxy.cn
http://bhmy7GPM.txfxy.cn
http://jCY5XMTy.txfxy.cn
http://TnIY57Hb.txfxy.cn
http://www.dtcms.com/a/363221.html

相关文章:

  • 2024年全国研究生数学建模竞赛华为杯D题大数据驱动的地理综合问题求解全过程文档及程序
  • 【硬核干货】把 DolphinScheduler 搬进 K8s:奇虎 360 商业化 900 天踩坑全记录
  • 复杂PDF文档如何高精度解析
  • 【Flask + Vue3 前后端分离管理系统】
  • GitHub 热榜项目 - 日榜(2025-09-02)
  • 详解 C++ 中的虚析构函数
  • 电机控制(二)-控制理论基础
  • 撤销回退 情况⼆:已经 add ,但没有 commit
  • Linux 文本处理神器——sed
  • 手写Muduo网络库核心代码2--Poller、EPollPoller详细讲解
  • 《WINDOWS 环境下32位汇编语言程序设计》第10章 内存管理和文件操作(2)
  • Laravel 权限控制新选择:使用 Laravel-authz 集成 PHP-Casbin
  • IEEE 802.11 MAC架构解析:DCF与HCF如何塑造现代Wi-Fi网络?
  • 从实操到原理:一文搞懂 Docker、Tomcat 与 k8s 的关系(附踩坑指南 + 段子解疑)
  • 避坑指南!解决Navicat运行SQL成功但没有表的问题
  • 当AI“读懂”你的心:NLP如何让机器拥有真正的“语言智能”?
  • 最大熵强化学习相比传统强化学习,有什么缺点?
  • 固定资产管理系统(蓝牙标签打印+移动端Java+Vue+Uniapp源码)
  • 美团龙猫(longcat.AI)编写的利用二分查找优化Excel的sheet.xml指定范围输出C程序
  • 华清远见25072班I/O学习day3
  • 安装部署k3s
  • MySQL 8.0 窗口函数详解:让数据分析更简单高效
  • 核心理念:用“图像序列 + 光流插帧”降低硬件需求
  • UNet改进(37):AxialDynamicConv2D原理剖析与实战应用
  • GoLand IDE 无法识别 Go 工作区中的引用,如何解决?
  • 解决方法:QT打开正常的以前旧版本项目运行却报错的原因和解决方法
  • 猫头虎AI分享:无需OCR,基于ColQwen2、Qwen2.5和Weaviate对PDF进行多模态RAG的解决方案
  • Suno AI 新功能上线:照片也能唱歌啦!
  • 【GPT入门】第64课 Ilamaindex初步认识与llm幻觉解决方法
  • 高效对象属性复制工具