快速原型阶段必须保留doctype-first、html-lang-require、id-unique、tag-pair四条硬性规则,因其一旦缺失将导致怪异模式、无障碍失效、dom不可控及结构错乱,且无法批量修复;其余规则可临时禁用但须标注原因并限期恢复。

快速原型阶段不该牺牲可维护性底线,HTML质量妥协必须可控、可追溯、可批量修复。
原型期禁用但必须记录的硬性规则
不是所有规则都适合在原型阶段关闭——有些一旦放开,后续几乎无法自动修复。这些规则必须保留,哪怕报错也得人工确认:
-
doctype-first:缺失或错位的会直接导致 IE 或旧 WebView 进入怪异模式,样式和 JS 行为全乱,无法靠后补救 -
html-lang-require:没有lang属性的页面,屏幕阅读器无法切换语音,无障碍测试一票否决,且无法通过脚本批量注入(lang 影响整个文档根节点) -
id-unique:重复id会让document.getElementById()、CSS ID 选择器、锚点跳转全部失效,JS 脚本行为不可预测,后期 grep + 替换极易出错 -
tag-pair:未闭合标签(如<p>内容</p> <div>嵌套)会被浏览器自动修正,DOM 结构与源码严重不一致,W3C 验证直接报错,且无法用正则安全修复<h3>可临时禁用但需标注原因的规则</h3> <p>这些规则影响体验或协作效率,但不破坏基础功能,可在 <code>.htmlhintrc中设为false,同时在注释中说明理由和预计恢复时间:-
attr-value-double-quotes:原型中常写img src=logo.png快速过一遍,但需在注释里写<!-- HTMLHint disable-line attr-value-double-quotes: prototyping, will re-enable before PR --> -
attr-lowercase:临时允许onClick或data-Meta等命名,但禁止混用(比如同一文件里既有class又有CLASS),避免后期 grep 时漏掉大写变体 -
title-require:单页原型常无标题,但需确保每个标签内至少留一个占位<title>[WIP]</title>,防止空 title 被 SEO 工具误判为垃圾页
原型交付前必须运行的三步补救检查
原型转正式开发前,不能只靠人眼扫一遍。以下命令必须执行,且失败即阻断合并:
- 运行
htmlhint --rule "{'tagname-lowercase': true}" src/**/*.html:强制校验标签小写,这是语义化和后续自动化工具(如 Prettier、Svelte/Vue 模板解析)的前提 - 用
grep -r 'class=' src/ | grep -v 'class="[^"]*"' | head -5快速抽检引号缺失情况——引号问题在模板引擎里极易引发 XSS 或属性截断 - 打开 Chrome DevTools → Elements 面板,右键任意元素 → “Edit as HTML”,手动删掉一个
-











