回答整体思路(你可以先记住这个结构)
- 先总述:一两句话概括你对组件库和 Wot UI 的整体经验
- 再拆成三块:
- 常见组件库的使用经验
- 对组件库设计思想 / 架构的理解
- 在 Wot UI 做过的具体事情和案例
- 最后收尾:说自己能把这套经验带到新团队,落地业务组件库或提升现有组件库
下面我按「面试官可能会问什么」+「建议回答示例」来帮你准备,你可以选几段背成自己的话。
1. 面试官可能的第一问:你熟悉哪些组件库?具体是怎么用的?
目的:验证你是否真的用过主流组件库,以及用得有多深入。
可以这样答:
简要列举+场景化
- 我日常比较熟悉的有 XXX、XXX(比如:Element Plus / Ant Design / Vant / Naive UI 等,按你真实情况说)。
- 一般会在中后台项目里用 XX,在移动端或小程序里用 XX,主要负责页面搭建、复杂表单、弹窗流程、列表筛选等需求。
强调「不仅会用,还会封装」
- 在项目中不会直接裸用组件库,而是结合业务做二次封装,比如统一表单校验规则、统一弹窗行为、统一主题色,避免每个页面重复配置。
- 遇到组件库不满足需求的情况,会基于它的基础组件或样式变量自己封一层。
示例回答(可直接背):
- 我常用的有 A、B、C 这些组件库,在中后台项目和移动端项目里都有落地过。
- 平时不仅是“会调 API 搭界面”,更多是基于这些组件库做业务级封装,比如把表单、弹窗、列表这些高频场景抽成通用组件,统一交互和样式,减少重复开发。
- 通过大量使用主流组件库,我也积累了一些对组件库 API 设计、交互细节、扩展性的理解,这些都在后面做 Wot UI 的时候有用到。
2. 说说你理解的组件库设计思想和架构?
目的:验证你是不是停留在“调用 API”层面,还是理解过背后的设计。
你可以从这几个点来讲:
组件库的目标
- 提升开发效率:高复用、减少重复造轮子
- 保证体验一致:视觉规范、交互一致性
- 可维护可演进:版本升级不崩、易扩展、支持自定义主题
设计原则
- API 简单直观:常用场景开箱即用,复杂场景可扩展
- 高内聚低耦合:组件之间尽量解耦,通过事件、插槽、props 通信,而不是互相硬引用
- 向下兼容:尽量避免破坏性变更,有破坏性变更要有 deprecate 方案
- 可配置 / 可定制:支持主题定制、样式变量、全局配置等
架构层次(重点)
- 基础层:设计变量(颜色、间距、字号)、基础样式、基础动画等
- 工具层:工具函数(节流、防抖、DOM 操作)、通用 hooks、内部事件总线等
- 基础组件:Button / Input / Toast / Dialog / Tabs 等通用 UI 组件
- 业务组件(如果有):如表单封装、表格封装等
- 工程层:文档站、按需加载、Tree Shaking、单元测试、CI、版本管理、跨端兼容(对 uni-app、小程序、H5 等)
示例回答(偏精简版):
- 我理解的组件库,首先是要在“提升开发效率”和“保持体验一致”之间做平衡。
- 在设计思想上会坚持 API 简单直观、高内聚低耦合、强调向下兼容和可扩展性,常用场景开箱即用,复杂场景提供扩展能力。
- 架构上一般会分几层:底层有设计变量和基础样式,中间是工具函数和通用 hooks,上面是一个个基础组件,再往上会有一些业务级封装。外面还有工程层面的文档、按需打包、测试和 CI。
- 在做 Wot UI 的时候,我们也是按这种分层来做的,比如先沉淀一套统一的设计变量,再基于这些变量去搭建 Button、Toast 这些基础组件。
3. 面试官重点追问:你在 Wot UI 具体做了什么?
这里一定要说「具体事情 + 问题 + 解决方案 + 结果」,别只说“参与设计开发维护”。
你可以从三类内容来准备:
1)负责的模块 / 组件
- 举例:
- 参与了 XXX、XXX 等组件的设计和开发(比如 Toast、Popup、Form、Tabs 等,按你真实经历说)
- 做过一些全局性的能力,比如:全局配置、主题定制、国际化支持、按需引入优化等
示例说法:
- 在 Wot UI 里,我主要参与了若干基础组件和反馈类组件的设计开发,比如 Toast / Dialog / Tabs 等。
- 从需求评审、API 设计、交互细节、到编码实现、文档编写、线上 bug 维护这条链路都有参与。
2)挑 1–2 个代表性案例展开讲
比如你可以拿一个「Toast 组件」这样的反馈类组件来说(和你现在打开的文件也对应上):
需求与目标
- 支持全局调用(如
Toast.success('')这种) - 支持不同平台(H5、小程序、uni-app)
- 需要队列 / 多实例处理、自动关闭、遮罩、点击穿透等问题
- 支持全局调用(如
设计与实现思路
- 设计统一的 Options:type、duration、position、mask、icon 等
- 提供组合 API:
show / success / error / loading,内部统一走一个渲染逻辑 - 处理多次调用:是选择队列,还是只保留最新一条?怎么保证动画不要抖动
- 做了哪些跨端兼容处理
结果
- 在业务项目里大量复用,减少了重复封装
- 有哪些线上 bug,通过优化组件解决了(比如:某端 Toast 位置错乱、滚动穿透、关闭不及时等)
示例回答(可以背一个简化版):
- 在 Wot UI 里我印象比较深的是做 Toast 这类反馈组件。
- 一开始的需求是要支持全局调用、跨端适配,还要考虑多次调用时的展示策略。
- 我在设计上先抽象了一套统一的 Options(比如 type、duration、position、是否有遮罩等),对外暴露
show / success / error / loading这类方法,内部都复用同一套渲染逻辑,既保证 API 简单,又便于维护。 - 为了避免多次调用导致的动画抖动和覆盖问题,我在内部做了实例管理和调用节制,默认只展示最新的一条,特殊场景才排队展示。
- 后面在业务里大量用这个组件,基本不用再为每个项目单独封装 Toast,统一修一处 bug 就能全局收益。
3)维护 & 质量保障
- 你可以强调:
- 写了单元测试 / E2E 测试,覆盖组件的核心行为
- 接入 CI,在 PR 阶段跑 lint 和测试
- 对用户反馈的 issue,会定位问题、写复现 demo、产出修复 PR 和 changelog
示例说法:
- 在维护上,我会针对关键组件补充单元测试,比如交互类组件的显示隐藏逻辑、边界参数处理等,保证后续重构不容易引入回归。
- 也参与了部分 issue 的跟进,习惯先用最小复现仓库把问题还原出来,再去排查是使用方式问题还是组件库实现上的 bug,然后提交修复 PR 并更新文档和 changelog。
4. 可能追问:如果让你从零设计一个组件库,你会怎么做?
这类问题很常见,你可以用「步骤法」来答:
第一步:统一设计规范
- 先和设计、团队确认一套基础设计规范:颜色、字号、间距、圆角、状态(悬浮、点击、禁用等)。
- 没有设计也没关系,可以先抽象出一套基础 token,后面再渐进式完善。
第二步:梳理组件列表和优先级
- 从业务项目中抽象高频场景,先做 Button / Layout / Form / Dialog / Toast 等基础组件。
- 逐步再覆盖 Tabs、Dropdown、Table 等。
第三步:设计 API 和交互
- 尽量对齐社区习惯(比如 props 命名、事件命名习惯),降低学习成本。
- 先把 80% 高频场景做到“零配置/弱配置”,复杂场景通过插槽、render 函数、扩展 props 支持。
第四步:工程化和发布
- 搭建按需加载、Tree Shaking 的构建方案;
- 支持类型声明、自动文档生成、Demo 预览;
- 做好测试、CI、版本管理和 changelog。
示例回答:
- 如果从零做组件库,我会先从设计规范入手,和设计 / 团队确定颜色、间距、字号等基础 token,然后基于这套规范去设计基础组件。
- 在 API 上尽量对齐社区主流组件库的使用习惯,降低上手成本,同时通过插槽和扩展 props 提供灵活性。
- 工程层面会一开始就考虑按需加载、类型支持和自动化测试,这样后续演进和对外升级成本更可控。
- 在 Wot UI 的实践里,其实就是沿着这条思路,一边抽象组件,一边不断完善底层能力和工程体系的。
5. 可能追问:你做组件库时踩过什么坑?怎么解决的?
准备 1–2 个「坑+解决方案」很加分。
你可以举类似下面的例子(按你实际情况改):
跨端兼容坑(特别是 uni-app / 小程序 / H5)
- 不同端对某些 CSS 特性、事件行为处理不一致,导致组件在某端表现异常。
- 解决:抽象适配层,或者针对不同端做轻量分支处理,并在文档里说明限制。
API 设计不当导致后续难以维护
- 早期 API 设计没考虑好扩展性,后来需求多了只能新增很多 props 或用奇怪的组合。
- 解决:迭代 API,增加更通用的配置方式,同时保证兼容老版本,通过 deprecate 提示引导用户迁移。
示例回答:
- 做组件库过程中也踩过一些坑,比如在多端适配时,同一段样式在小程序上表现和 H5 不一致,导致组件在某端出现错位。后来我把这类差异抽到适配层,统一管理不同端的差异处理,同时在文档里明确标注哪些特性在哪些端有差异。
- 还有 API 设计的问题,一开始某个组件的 API 设计得比较“针对场景”,后面需求一多就会堆 props。后来我在不破坏现有用法的前提下,加了一层更通用的配置方式,并在文档和 changelog 里给出迁移建议,逐步引导用户用新的 API。
6. 把这些内容浓缩成你简历点的口头版
最后你可以准备一个 30–60 秒的「总结版」,在面试官顺着简历问时直接说:
示例总结(建议背熟):
- 关于组件库这块,我之前在项目里大量使用过主流组件库,也基于它们做过业务级的二次封装,所以对组件库的 API 设计、交互细节和扩展性有一些实践经验。
- 后面参与了开源组件库 Wot UI 的设计和开发维护,主要负责一些基础组件和反馈组件,比如 Toast、Dialog、Tabs 等,从需求评审、API 设计、编码实现到文档和 bug 维护都有参与。
- 在这个过程中,我更多关注组件库的整体设计思想和架构,比如统一设计变量、分层抽象、按需加载和测试体系,也踩过一些多端适配和 API 设计的坑,并通过重构和文档规范来解决。
- 这些经验可以帮助我在新团队里更好地使用和改造现有组件库,或者参与到自研组件库的建设中。
如果你愿意,你可以把你在 Wot UI 里真正做过的 2–3 个组件和问题点告诉我,我可以帮你改写成更贴合你真实经历、可以直接在面试中用的答案。
