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

Vue组件化

❓ 为什么需要组件?

场景:你要展示3个可折叠面板,直接复制3份代码?
结局:改一个Bug,改三次!💥
解决方案:召唤组件——代码界的“乐高积木”!

举个🌰:可折叠面板的逆袭

原始代码

<!-- App.vue中硬编码3次面板 -->
<template><h3>可折叠面板</h3><div class="panel">...</div><div class="panel">...</div><div class="panel">...</div>
</template>

问题:代码臃肿、维护地狱!

组件化后

<!-- MyPanel.vue封装组件 -->
<template><div class="panel">...</div>
</template><!-- App.vue优雅复用 -->
<template><h3>可折叠面板</h3><MyPanel /><MyPanel /><MyPanel />
</template>

效果:改一次,全生效!🎉

总结

组件 = 独立代码块(HTML+CSS+JS三合一)
复用场景:重复UI复杂功能模块


🎯 组件化:化繁为简的代码哲学

1. 组件是什么?
  • 定义:一个.vue文件,自带HTML、CSS、JS的“代码乐高”

  • 特点

    • 独立:自己玩自己的,不干扰别人

    • 复用:哪里需要,搬哪里!

2. 组件化的灵魂
  • 思想:把页面拆成小积木,再拼装成完整城堡🏰

  • 好处

    • 维护简单:改Bug像找乐高块一样快

    • 团队协作:你拼城墙,我搭炮塔,互不干扰


🌳 根组件:App.vue的帝王地位

定位:整个应用的顶层Boss,包裹所有小弟(子组件)
构成

<template>  <!-- 骨架 --> </template>
<script>    <!-- 灵魂 --> </script>
<style>     <!-- 皮肤 --> </style>

彩蛋:想用Less/Sass?加个lang="less",再npm i less


🔧 组件的使用四部曲

1. 创建组件

新建BitHeader.vue,填充三件套:

<template><div class="bit-header">我是Header</div>
</template>
<script setup></script>
<style scoped>.bit-header { background: #8064a2; }
</style>
2. 导入组件

在父组件中召唤它:

<script setup>
import BitHeader from './components/BitHeader.vue'
</script>
3. 使用组件

像用HTML标签一样丝滑:

<template><BitHeader />  <!-- 大驼峰式 --><bit-header></bit-header>  <!-- 烤串式 -->
</template>
4. 全局注册(VIP通行证)

main.js中注册,全项目通用:

import BitButton from './components/BitButton.vue'
app.component('BitButton', BitButton)  // 大驼峰命名
app.component('bit-button', BitButton) // 烤串命名

效果:任意.vue文件都能用<BitButton />


💡 组件化实战:搭个页面玩玩!

目标:用组件拼出Header+Main+Footer

<!-- App.vue -->
<template><BitHeader /><BitMain /><BitFooter />
</template>

效果
 

页面结构


 

页面结构

页面结构

彩蛋:全局注册一个<BitButton>,全站按钮风格统一!


🚨 避坑指南

  1. 组件命名:推荐大驼峰(如MyPanel),或烤串法(如my-panel

  2. 作用域CSS:加scoped,避免样式污染!

  3. 组件通信:父子用props,全局用Pinia/Vuex(后续篇章解锁!)


🎯 总结

  • 为什么组件:拒绝复制粘贴,拥抱高效复用!

  • 组件化精髓(化整为零)→ (灵活拼装)

  • 全局注册:一次注册,全站通行!


🚀 现在,打开你的Vue项目,把重复代码变成“乐高块”吧!
(如果卡住,默念:“组件在手,天下我有!” 😎)

http://www.xdnf.cn/news/669511.html

相关文章:

  • Rust 学习笔记:关于闭包的练习题
  • Flink系列文章列表
  • 分布式系统中的网络编程
  • wordpress迁移到Hostinger
  • 爬虫入门指南-某专利网站的专利数据查询并存储
  • YOLOv2 深度解析:目标检测领域的进阶之路
  • 【文献阅读】EndoChat: Grounded Multimodal Large Language Model for Endoscopic Surgery
  • 【HW系列】—目录扫描、口令爆破、远程RCE流量特征
  • 攻防世界-ics-07
  • 【Web应用】基础篇04-功能详解-权限控制(创建菜单--分配角色--创建用户)
  • 使用 scikit-learn 库对乌克兰冲突事件数据集进行多维度分类分析
  • ABP VNext + Apache Flink 实时流计算:打造高可用“交易风控”系统
  • 【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet
  • 汽车电子/电气(E/E)架构将朝着区域(分区)式架构方向发展
  • Filebeat es 同步服务器日志到es
  • C++ STL 容器:List 深度解析与实践指南
  • Linux编辑器——vim的使用
  • 文件上传白名单绕过(图片马 - 图片二次渲染绕过)
  • React从基础入门到高级实战:React 核心技术 - React 与 TypeScript:构建类型安全的应用
  • 第十章:构建之巅 · 打包与部署的终极试炼
  • uniapp-商城-72-shop(5-商品列表,步进器添加商品到的购物车实现)
  • Unsupervised Learning-Word Embedding
  • 如何提高CAD作图设计效率,技术分享
  • 每日算法 -【Swift 算法】实现回文数判断!
  • stm32f系列工程切换到H系列
  • 电芯单节精密焊接机:以先进功能与特点赋能电池制造科技升级
  • 传统数据表设计与Prompt驱动设计的范式对比:以NBA投篮数据表为例
  • PHPStudy 一键式网站搭建工具的下载使用
  • EfficientLLM: Efficiency in Large Language Models 高效大模型
  • AppArmor(Application Armor)是 Linux 内核的一个安全模块