代码格式化
SQL / HTML / CSS / JS / XML · 共 6 个工具
格式化工具只做一件事:用统一的空白重新输出你的代码。它不修 bug、不改名字、不校验语义。对 SQL、CSS、JS、JSON 和多数 XML 而言这是安全的,因为词法单元之间的空白不承载含义。
这个分类里有两个格式默认不安全。HTML 渲染时会折叠连续空白,所以在两个内联元素之间插入换行会渲染出一个可见空格,而 pre、textarea、script、style 内部的内容完全不能重排。XML 没有这条规则:元素之间的空白就是文档的一部分,带签名的 XML 文档一旦格式化,签名立刻失效。
我该用哪个?
- 只为读得顺:粘贴、格式化、复制回去。对任何空白不敏感的代码都适用。
- CSS 里有 calc():加号减号两侧的空格是文法要求的。格式化会保留它们,手工整理时不要删掉。
- HTML 片段:格式化后要看渲染结果。被换行分开的内联元素会多出一个空格,表现为意外的间隙。
- 带签名的 XML:不要格式化。元素空白的任何变化都会改变规范化形式,验签必然失败。
- nginx 配置:括号匹配可能把正则量词 {2} 误判成块的开头。格式化只是外观,上线前必须用 nginx -t 校验。
- 压缩 JavaScript:这里是空白级压缩,不是 AST 级编译压缩。它不会重命名变量、不会删死代码、不做作用域混淆——生产构建请用真正的打包器。
本分类的全部工具
SQL 格式化HOT
按子句换行缩进,可一键关键字大写,便于阅读复杂查询
HTML 缩进美化
按标签层级缩进排版,script 与 style 内部内容保持原样
CSS 格式化 / 压缩
美化 CSS 缩进排版,也能一键压缩去掉冗余空白
JS 美化 / 压缩
按括号缩进美化,压缩时保护字符串不被破坏
XML 格式化 / 压缩
按标签层级缩进,或压缩成紧凑单行
Nginx 配置格式化
按 { } 与 ; 换行缩进,梳理 conf 配置层级
本分类的深度指南
- SQL 格式化:样式惯例、执行顺序与常见的误改风险按子句换行缩进,可一键关键字大写,便于阅读复杂查询
- HTML 美化:空元素、空白敏感与内联元素之间的空格按标签层级缩进排版,script 与 style 内部内容保持原样
- CSS 格式化与压缩:calc 里的空格为什么不能删美化 CSS 缩进排版,也能一键压缩去掉冗余空白
- JS 美化与"压缩"的边界:为什么不该用它替代真正的压缩器按括号缩进美化,压缩时保护字符串不被破坏
- XML 格式化:合法性要求与"格式化可能改变语义"的例外按标签层级缩进,或压缩成紧凑单行
- Nginx 配置格式化:括号陷阱与格式化不等于校验按 { } 与 ; 换行缩进,梳理 conf 配置层级
常见问题
格式化会改变代码的行为吗?
对 JS、CSS、SQL、JSON 不会——词法单元之间的空白无意义,词法序列不变。对 HTML 可能改变渲染(被折叠的空白在内联元素之间变成可见空格);对 XML 则改变了文档本身,因为文本节点(含空白)就是内容。工具会报告改了什么,但真正的检查是渲染结果。
格式化通过就代表代码合法吗?
不代表。格式化只跟踪括号与引号,不做编译。JavaScript 可以格式化得很干净但运行时抛错,CSS 可以很干净但属性不被支持,nginx 配置也可以很干净但被 nginx 自己拒绝。格式化和校验是两件事。
为什么压缩后的 JS 还是很大?
因为空白只是一部分。注释和缩进在这里被去掉,但标识符名称、未使用的函数和分支都原样保留,而它们通常占文件的更大比例。这就是格式化器和基于编译器的压缩器之间的差别。