先给结论:不要用“这个组件在首页正常”来代表它全站正常。正确做法是把组件当成一个带输入条件的函数,把页面提供的变量列全,再为每个变量组合准备一组最小样例,逐个记录输出。下面从最常见的一类矛盾现象切入,说明两种解释、区分证据和具体验收动作。
淮南网站建设中很常见的一幕是:开发者在首页放了一个卡片列表、导航下拉或表单组件,显示正常,于是判定“组件已完成”。等到栏目页、详情页、搜索结果页陆续接入,才发现标题被截断、图片比例错乱、按钮换行、下拉被遮挡。问题往往不在组件代码本身,而在组件被放进不同页面时,吃到的输入不一样。
把组件想成一个函数:它接收标题长度、图片尺寸、数据条数、容器宽度、父级样式、语言和字符集等输入,输出一段布局。首页给出的是一组特定输入,换页后输入变了,输出自然可能变。验收样例要做的,就是把“输入变了”这件事显式化。
同一组件表现不一致,通常有两种解释,而且它们需要的修复动作完全不同。
解释一:输入数据不同。组件逻辑本身没问题,只是不同页面传入的内容长度、字段是否为空、图片宽高比、列表条数不一样。比如标题在首页是八个字,在详情页是三十个字;图片在栏目页是方图,在详情页是长图。这类问题改的是数据约束、截断规则或空值兜底。
解释二:宿主环境不同。输入数据一致,但组件所在的容器、父级样式、主题变量、脚本加载顺序不一样。比如同一个卡片在首页处于两列栅格,在侧栏处于单列窄容器;同一下拉在无滚动容器里正常,在overflow:hidden的父级里被裁掉。这类问题改的是容器约定、样式作用域或层级关系。
把这两种解释混在一起,就会出现“改了标题截断,图片还是错”的反复返工。
要判断属于哪一种,最有效的手段是控制变量:先固定宿主环境,只换数据;再固定数据,只换宿主环境。
注意,某个页面“看起来正常”不能单独证明组件没问题。它可能只是恰好没触发边界条件。反过来,某个页面报错也不能直接证明是组件缺陷,可能是该页传入了未约定的数据。
下面是一套可以直接执行的样例构造流程,适合在淮南网站建设项目的组件验收阶段使用。
这套动作的结果会直接影响下一步:通过样例暴露出的边界,应该转化为数据校验规则、容器使用约定或组件参数默认值,而不是只修当前这一个页面。只修页面,下一个新页面接入时同样的问题会再来一次。
假设某项目有一个“资讯卡片”组件,首页显示正常,栏目页标题换行。按上面的流程:先固定栏目页容器,把标题从十个字逐步加到三十个字,发现超过十八个字开始换行——这偏向解释一,动作是把截断规则定为十八字并加省略号。再固定一份二十字的标题,把卡片分别放进主栏和侧栏,发现侧栏仍换行——这偏向解释二,动作是给侧栏容器约定更小的字号或更窄的内边距。两个动作分别对应两种解释,混用就会来回改。
这套方法有两个适用条件。第一,组件本身的行为要相对稳定,如果组件还在频繁改结构,样例会很快过期,应先冻结接口再验收。第二,变量清单要覆盖真实页面,而不是只覆盖开发者熟悉的那几页;遗漏的模板往往正是出问题的地方。
另外,样例通过只说明这些输入组合下表现符合预期,不代表所有未来页面都不会出问题。因此每次新增页面模板时,应把该模板的容器和数据特征补进样例清单,重新跑一遍相关组合,而不是默认沿用旧结论。