应用页面多了,你会发现大量重复的界面片段:卡片、按钮、弹窗。把它们封装成自定义组件,代码量减少、维护变容易、改动一处全站生效。
为什么需要组件化
重复代码的三个危害:改需求要改多处、容易改漏、文件越来越长难维护。自定义组件把“界面+逻辑”打包,像积木一样复用。
组件化也是团队协作的基础:每人负责几个组件,互不干扰。

@Component:创建组件
用 @Component 定义一个组件:它有自己的 build() 描述界面,有自己的状态和逻辑。组件通过参数接收外部数据,通过回调(@Event 或普通函数)通知外部事件。
比如定义一个 Card 组件:传入标题、内容、图片,点击时回调点击事件,三个页面引用同一个 Card。
@Builder:复用局部 UI
不想定义完整组件,只想复用一段 UI 结构,用 @Builder:把一段界面封装成方法,在 build() 里调用。@Builder 适合“轻量复用”,不涉及独立状态。
@Builder 可以传参数,实现带参数的局部复用,比如不同的按钮样式。

@Extend:扩展组件能力
@Extend 给已有组件添加自定义样式或方法:比如给所有 Button 统一加一个主题样式,定义一次,全局生效。适合做样式统一。
@Extend 可以带参数,实现不同变体,是主题定制的利器。
组件化设计原则
单一职责:一个组件只做一件事;接口清晰:参数和回调命名规范;状态收敛:能不放组件的状态就不放。组件之间尽量通过参数和回调通信,避免互相“动手脚”。
组件化不是一蹴而就:先从小卡片开始,尝到甜头后自然越拆越细。组件化程度,是应用工程成熟度的重要标志。