html.json 必须显式声明 "language": "html",因为 vs code 不会自动推断 snippet 的生效语言,即使文件名为 html.json;漏写则 snippet 在 .html 文件中完全不触发。

为什么 html.json 必须显式声明 "language": "html"
VS Code 不会自动推断 snippet 的生效语言,哪怕你把它放在 html.json 文件里。如果漏写 "language": "html",哪怕内容完全正确,在 .html 文件中也根本不会触发。
常见错误现象:输入前缀后毫无反应,检查 JSON 格式无误、文件名也没错,就是不展开——大概率是缺了这行。
- 必须在每个 snippet 对象外层加
"language": "html",不是写在body里,也不是靠文件名隐含 - 全局 snippets(如
snippets.json)默认作用于所有语言,不推荐用于 HTML 高频结构,容易和 Emmet 冲突 - 如果团队用的是 Pug / JSX / Vue 单文件组件,要分别配
pug.json、javascript.json或vue.json,不能混用
prefix 命名怎么避坑:别用 main、header 这类通用词
Emmet 已经占用了大量短关键词:main 展开为 <main></main>,header 展开为 <header></header>。你自定义的 snippet 如果 prefix 和它们一样,VS Code 会优先走 Emmet,你的 snippet 彻底失效。
实际使用场景中,团队高频结构往往是带样式或语义约束的,比如:tw-container(Tailwind 容器)、seo-head(含 Open Graph meta 的 head)、form-input(带 label + input + error 的完整表单控件)。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 推荐命名格式:
项目缩写-功能描述,例如ac-header(Aquariosan 项目专用 header) - 避免单字或纯语义词;加连字符比驼峰更安全,VS Code 对连字符解析更稳定
- 测试方法:在空白
.html文件中输入前缀 +Tab,看是否弹出你定义的 snippet 而非 Emmet 补全
含双引号、&、<script></script> 的 snippet 怎么写才不崩
直接复制浏览器里调试好的 HTML 片段进 body 字段,90% 会失败——因为 JSON 解析器看到未转义的双引号就终止加载,整个 html.json 文件变为空白,VS Code 甚至不报错。
典型崩溃点:"<script>console.log("ok")</script>" 中的内层双引号没转义;"<div class="px-4">" 同理;<code>"©" 中的 & 也要处理。
-
"→\"(注意反斜杠必须存在,且不能多也不能少) -
&→\u0026(用 Unicode 转义最稳妥,&在 JSON 字符串里反而可能被二次解析出错) 和 <code>>一般不用转义,但若出现在属性值里(如title="x > y"),建议统一用\u003c/\u003e- 写完立刻保存,然后**完全重启 VS Code**——修改
html.json后热重载不生效,这是硬性要求
团队共享 snippet 时,$TM_FILENAME 和 $1 的顺序怎么安排才顺手
一个 snippet 里既有动态变量(如 $TM_FILENAME),又有手动编辑占位符(如 $1),光标跳转顺序错乱会让前端同学频繁按方向键,反而拖慢速度。
真实协作场景中,大家最常改的是标题文字、容器 class、首屏内容——这些应该优先获得焦点;文件名、日期这类只读信息应该放在最后,甚至设为 $0(最终停留位)。
- 把用户必须填的内容放前面:
"<title>${1:Document}</title>",而不是"<title>$TM_FILENAME</title>"紧跟其后 -
$TM_FILENAME_BASE比$TM_FILENAME更实用(去掉 .html 后缀),适合用作页面标题默认值 - 多个可选值用
${1|Home,About,Contact|},但选项别超过 4 个,否则选择框太长影响效率 - 别在
body最后一行写"$0"——它会把光标卡在闭合










