代码格式化

SQL / HTML / CSS / JS / XML · 共 6 个工具

格式化工具只做一件事:用统一的空白重新输出你的代码。它不修 bug、不改名字、不校验语义。对 SQL、CSS、JS、JSON 和多数 XML 而言这是安全的,因为词法单元之间的空白不承载含义。

这个分类里有两个格式默认不安全。HTML 渲染时会折叠连续空白,所以在两个内联元素之间插入换行会渲染出一个可见空格,而 pre、textarea、script、style 内部的内容完全不能重排。XML 没有这条规则:元素之间的空白就是文档的一部分,带签名的 XML 文档一旦格式化,签名立刻失效。

我该用哪个?

本分类的全部工具

SQL 格式化HOT 按子句换行缩进,可一键关键字大写,便于阅读复杂查询 HTML 缩进美化 按标签层级缩进排版,script 与 style 内部内容保持原样 CSS 格式化 / 压缩 美化 CSS 缩进排版,也能一键压缩去掉冗余空白 JS 美化 / 压缩 按括号缩进美化,压缩时保护字符串不被破坏 XML 格式化 / 压缩 按标签层级缩进,或压缩成紧凑单行 Nginx 配置格式化 按 { } 与 ; 换行缩进,梳理 conf 配置层级

本分类的深度指南

常见问题

格式化会改变代码的行为吗?

对 JS、CSS、SQL、JSON 不会——词法单元之间的空白无意义,词法序列不变。对 HTML 可能改变渲染(被折叠的空白在内联元素之间变成可见空格);对 XML 则改变了文档本身,因为文本节点(含空白)就是内容。工具会报告改了什么,但真正的检查是渲染结果。

格式化通过就代表代码合法吗?

不代表。格式化只跟踪括号与引号,不做编译。JavaScript 可以格式化得很干净但运行时抛错,CSS 可以很干净但属性不被支持,nginx 配置也可以很干净但被 nginx 自己拒绝。格式化和校验是两件事。

为什么压缩后的 JS 还是很大?

因为空白只是一部分。注释和缩进在这里被去掉,但标识符名称、未使用的函数和分支都原样保留,而它们通常占文件的更大比例。这就是格式化器和基于编译器的压缩器之间的差别。