.editorconfig比settings.json更可靠,因其是跨编辑器、跨操作系统的标准配置,能统一团队及ci环境的格式行为,避免git diff中出现缩进混乱等问题。

为什么 .editorconfig 比 VSCode settings.json 更可靠
因为 .editorconfig 是跨编辑器、跨操作系统的标准配置文件,VSCode、WebStorm、Sublime Text 等主流编辑器只要装了 EditorConfig 插件就会读取它;而 settings.json 只对当前 VSCode 实例生效,且无法约束新成员或 CI 环境中的格式行为。
常见错误现象:团队里有人用 WebStorm 提交了 Tab 缩进的 HTML,VSCode 用户拉代码后自动格式化又转成空格,Git diff 里全是缩进变更。
-
.editorconfig优先级高于编辑器默认设置,能强制覆盖“自动检测缩进”逻辑 - 必须把
root = true放在第一行,否则子目录可能误读上级配置 - HTML 文件要单独匹配:
[*.html],不能只写[*],否则 CSS/JS 的缩进规则会意外覆盖 HTML - Windows 和 macOS 的换行符差异(
crlfvslf)必须显式声明end_of_line = lf,否则 Git 会反复提示“CRLF will be replaced by LF”
HTML 中换行符(\n)在源码里有效,但浏览器不渲染?
是的。HTML 解析器会把标签内部连续空白(包括换行、制表符、多个空格)压缩成单个空格,所以你在 <p></p> 里手动换行,对页面显示完全没影响——这反而是好事情,让你能自由排版源码而不担心破坏 UI。
但有两个例外:
-
<pre class="brush:php;toolbar:false;"></pre>标签内保留所有空白和换行,适合代码块、日志输出 -
white-space: pre-wrap的 CSS 规则也能保留换行符并允许自动折行,适合从后端注入带\n的字符串(比如用户评论) - 别指望用
\n替代<br>或<p></p>—— 后两者是语义换行,前者只是源码可读性优化 - 模板引擎(如 Handlebars、Vue SFC)若未开启“保留空白”选项,会主动 strip 掉换行符,这时得查文档开
preserveWhitespace或用v-pre
Git 提交前自动统一换行符和缩进的最小可行方案
靠人手动检查不现实,必须用 Git Hooks + 简单脚本拦截问题提交。核心就两步:检测 + 修复,不依赖任何重型工具链。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
在项目根目录加 .husky/pre-commit:
#!/bin/sh
npx prettier --write --list-different "**/*.{html,css,js,ts}" || exit 1
npx editorconfig-checker . || exit 1
然后确保项目已安装:
npm install --save-dev prettier editorconfig-checker huskynpx husky install
关键点:
-
prettier --list-different仅检测,不修改,失败时直接阻断 commit(避免“修了但没提交”) -
editorconfig-checker会扫描所有文件,报告哪些行用了 Tab、哪些没结尾换行、哪些编码不是 UTF-8 - 不要用
git add .全量提交——Prettier 修复后需重新git add,否则修复白做
后端返回的字符串含 \n,前端怎么让它在 HTML 里真正换行
直接 innerHTML = "a\nb" 不会换行,因为浏览器按 HTML 规则解析,\n 被当空白处理。必须转换为 <br> 或用 CSS 控制。
安全且可控的做法:
- 用
String.prototype.replace(/\n/g, "<br>"),但要注意 XSS 风险,得先 escape 文本内容 - 更推荐 CSS 方案:
white-space: pre-line—— 它保留换行符语义,同时把连续空格合并,比pre-wrap更贴近自然段落行为 - React/Vue 中别用
v-html或dangerouslySetInnerHTML渲染未处理的 \n,优先走<div style="white-space: pre-line">{{ text }}</div> - 服务端如果用 Markdown,确认解析器是否开启了
breaks: true(如 marked.js),否则 \n 不会转<br>
最容易被忽略的是:CDN 或代理层有时会 strip 响应头里的 Content-Type,导致前端拿到的文本被当作 binary 处理,\n 字节被乱码替换——这种问题只能靠抓包确认原始响应体。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










