先给结论:不要急着判定组件“有Bug”或“样式失效”,而应把差异拆成可复现的输入条件,构造一组对照验收样例,分别覆盖内容长度、容器宽度、相邻模块和加载顺序。只有当这些样例在同一环境下稳定复现同一种差异,才值得进入修复或重做;否则更合理的动作是保留组件、改写调用方式,或退出该组件的复用。
同一组件在不同页面表现不同,常见原因有三类:一是输入内容不同,比如标题字数、图片比例、字段是否为空;二是容器条件不同,比如所在栏宽、父级内边距、是否处于两栏或全宽布局;三是上下文不同,比如上方模块高度、是否懒加载、是否被其他脚本改写。三类原因对应的动作完全不同。
如果差异只在某一类输入下出现,而组件本身在标准输入下正常,通常应保留组件,把约束写进调用规范,例如限定标题长度、图片比例或必填字段。如果差异来自容器条件,且组件无法通过参数适配,则应改写,把布局假设从组件内部移到页面层。如果差异表现为同一输入在不同页面仍随机出现,且无法稳定复现,则应先退出验收,转为排查加载顺序或第三方脚本,而不是继续加样式覆盖。
验收样例的价值在于可核对,而不是覆盖越多越好。建议每个组件至少构造四组样例,每组只改变一个变量:
每组样例都应记录三项证据:截图、浏览器控制台报错、以及组件外层容器的实际宽度值。没有这三项,差异描述通常无法支撑后续决策。
假设某企业站的产品卡片组件在列表页正常,在详情页侧栏出现文字溢出。构造样例后发现:列表页卡片宽度约 320 像素,侧栏宽度约 220 像素;把同一张卡片放入 220 像素容器后,溢出稳定复现。此时可判定差异来自容器宽度,而非组件损坏。
接下来有三种动作:若侧栏可以放宽到组件支持的最小宽度,则保留组件,只调整页面布局;若侧栏宽度不可变,则改写组件,增加窄容器下的字号或换行规则;若改写成本高于单独为侧栏写一个简化卡片,则退出该组件的复用,单独维护一个侧栏版本。这个判断依赖的是容器宽度这一可核对证据,而不是“看起来不一样”。
验收样例跑完后,输出不应只有“通过/不通过”。更实用的写法是:在什么输入和容器条件下,组件表现如何;该差异是否影响主要任务;下一步是保留并记录约束、改写并复测,还是退出复用。这样后续协作方才能判断是改页面、改组件,还是改调用方式。
如果同一差异在多次复测中结果不稳定,不要用单次截图下结论。请求量、抓取量或某项统计归零也不能单独证明处理正确,因为缓存、加载顺序和测试环境都可能造成类似现象。此时应固定环境、固定输入,再做一次对照,确认差异是否仍然存在。
这套方法适用于组件被多个页面复用、且页面容器或内容输入存在明显差异的企业建站项目。若组件只在一个页面使用,或差异只出现在单一浏览器且无法在其他环境复现,则不必构造完整样例矩阵,直接记录环境信息并复测即可。若差异涉及第三方脚本改写 DOM,应先确认脚本加载顺序,再决定是否保留组件,而不是先改组件样式。
最终要记住:验收样例的目标不是证明组件有问题,而是用可核对的输入和证据,把“保留、改写、退出”三种动作落到具体条件上,让下一步动作有依据可循。