HTML5发行时需压缩内联script/style代码以提升首屏性能,但需注意模板字符串转义风险;应移除冗余type属性;data-*命名须合规;picture的srcset/sizes配置错误会导致图片加载异常;meta charset须在前1024字节内。
和 标签内的内联代码要,但得看场景。生产环境发行 HTML5 时,内联 和 中的代码不压缩,会直接拖慢首屏解析和执行速度——浏览器必须逐字符解析,无法跳过空格或注释。
html-minifier-terser 默认不处理内联 JS/CSS,需显式开启 minifyJS: true 和 minifyCSS: true
`\n` 被误删换行),建议提前用 ESLint 规则 no-template-curly-in-string 排查html-webpack-plugin 的 minify 选项已默认启用内联压缩;Vite 则依赖 build.minify(默认 esbuild),它不处理内联 CSS/JS,需额外插件如 vite-plugin-html
type 属性HTML5 已废除大部分冗余 type,硬留反而干扰解析器推测 MIME 类型,尤其在 HTTP/2 Push 或 Service Worker 缓存策略下可能触发重复加载。
标签:删除 type="text/javascript"(所有现代浏览器默认按 JS 解析);保留 type="module" 或 type="importmap" 等语义化值 标签:删除 type="text/css"(唯一合法值,强制指定无意义):不写 type;写了反而让旧版 Safari 忽略该样式表 标签的 type 必须保留(如 type="video/webm"),否则媒体元素无法正确选择资源data-*)命名不规范会导致什么问题不会报错,但会破坏 JavaScript 的 dataset 映射规则,导致取值失败或类型错乱。
-),且不能以数字开头;data-user-id → element.dataset.userId(自动驼峰转换)data-user_ID → dataset.user_i_d(下划线被当普通字符,不转驼峰);data-1user → 完全无法映射(dataset 忽略)data-*,改用 JSON.stringify() 后赋值,并在 JS 中用 JSON.parse() 解析;避免未转义引号引发 HTML 解析截断 时 srcset 与 sizes 配置错误的典型表现图片加载错位、高 DPR 设备显示模糊、甚至空白——根本原因是浏览器无法匹配到合适资源,fallback 机制又没兜底。
立即学习“前端免费学习笔记(深入)”;
sizes 值必须是媒体条件 + 宽度描述(如 (max-width: 768px) 100vw, 50vw),漏写单位(50 而非 50vw)会导致整个属性失效,回退到
srcset 中每个候选 URL 后必须跟 x(设备像素比)或 w(资源固有宽度),混用时需配套 sizes;只写 srcset="a.jpg 2x" 但没 sizes,Safari 可能忽略 2x 版本 标签的 src 属性作为最终 fallback;否则在不支持 的环境(如部分邮件客户端)里图片完全不显示实际发行前,最容易被忽略的是@@##@@
位置和 的 as 值校验——前者必须在前 1024 字节内,后者若写成 as="script" 却加载 CSS,Chrome 会静默降级为 fetch,失去预加载意义。