先判断这是组件本身的问题,还是页面上下文造成的问题。验收样例不能只截取“正常页面”的效果,而应把出现差异的页面组合成对照样例,分别记录组件在默认、受限和冲突环境下的表现,再决定保留现状、改写组件还是退出该用法。
同一组件在不同页面表现不同,常见原因不是组件坏了,而是它进入页面后受到容器宽度、相邻模块、样式继承、脚本执行顺序或内容长度影响。构造验收样例的第一步,是把差异写成可重复的对照条件。
如果替换内容后差异消失,问题更可能来自数据长度或内容结构;如果差异仍在,才需要继续查容器和样式继承。这个动作的结果会直接决定下一步:前者进入内容适配样例,后者进入组件改写样例。
差异确认后,通常有三种处理方向。它们不是按好坏排序,而是按适用前提区分。
如果组件在列表页需要紧凑、在详情页需要展开,且两种表现都能完成各自任务,保留是合理的。此时验收样例要分别写明两种页面的预期结果,而不是强行统一成一种外观。代价是维护时要同时照顾两套规则,后续改组件必须回归两个页面。
如果组件在窄容器中溢出、在长内容下错位,或依赖外部样式才能正常显示,适合改写组件本身。改写前先构造最小样例:只保留触发差异的容器、内容和样式,去掉无关模块。若最小样例仍能复现,说明组件需要增加宽度、换行或间距约束。代价是可能影响已经正常的页面,因此改写后要把原正常页面加入回归样例。
如果某个页面把组件塞进不适合的容器,或让组件承担它不擅长的任务,退出该用法比继续修补更省成本。判断条件是:同一组件在其他同类页面都正常,只有这个页面异常,且异常来自页面布局而非组件规则。退出后要记录替代方案,避免下次又在同一位置复用。
验收样例不追求覆盖所有页面,而要覆盖能区分原因的组合。可以按下面结构组织:
假设某组件在列表页正常、在详情页右侧栏溢出。可以把详情页右侧栏宽度设为固定值,放入同一组件和同一段内容,观察是否复现。若复现,改写组件的宽度规则;若不复现,检查右侧栏内是否还有浮动或绝对定位元素。这个假设用于说明比较方法,不代表真实项目结论。
改写或退出之后,验收重点不是重新测一遍全站,而是检查与差异页面共享组件、共享容器或共享样式的页面。至少把原正常页面、原异常页面和最小复现样例放在同一轮检查中。若三者结果一致,说明处理方向有效;若原正常页面出现新问题,说明改写范围过大,应缩小到具体容器或具体页面规则。
最后把结论写成一句话:该组件在什么条件下保留、在什么条件下改写、在什么条件下退出。这样下次遇到同一组件的新页面时,不需要重新争论,只需对照条件判断。