怎样在VSCode中为React项目启用Emmet缩写_如何提高JSX编写效率【教程】

发布时间 - 2026-01-21 00:00:00    点击率:
VSCode JSX 中 Emmet 需手动设语言模式为 javascriptreact 或 typescriptreact;配置 emerald.syntaxProfiles 和 emerald.variables 才支持 jsx 插值与组件缩写,且需避免格式化插件干扰。

VSCode 默认支持 JSX 中的 Emmet,但需确认语言模式为 javascriptreact

VSCode 对 JSX 的 Emmet 支持不是靠文件后缀自动触发的,而是依赖当前编辑器右下角显示的语言模式。如果打开 .jsx.tsx 文件,但状态栏显示的是 JavaScriptTypeScript,Emmet 缩写(如 div>ul>li*3)将不会展开。

解决方法很简单:

  • 点击 VSCode 右下角语言模式标签(如 “JavaScript”),输入 javascriptreact 并回车
  • 或按 Ctrl+Shift+P(Win/Linux)/Cmd+Shift+P(Mac),运行命令 Change Language Mode,再选 JavaScript React
  • 推荐在项目根目录加 .vscode/settings.json,强制匹配:
    {
      "files.associations": {
        "*.jsx": "javascriptreact",
        "*.tsx": "typescriptreact"
      }
    }

JSX 中 Emmet 缩写默认不生成双花括号,需手动补全或配置 emerald 行为

输入 div{hello} 回车后,默认生成 hello,而非 {hello} —— 这是因为 Emmet 默认把大括号当作文本内容,而非 JSX 插值语法。

要让 {} 被识别为插值包裹符,有两条路:

  • 输入时用反斜杠转义:写成 div{\{hello\}} → 展开为
    {hello}
  • 更实用的是启用 Emmet 的 jsx 语法支持:在 settings.json 中添加
    "emerald.syntaxProfiles": {
      "javascript": "jsx"
    }
    (注意:这是旧版设置;VSCode 1.84+ 已改用 "emerald.syntaxProfiles" → 实际应设为 "emerald.syntaxProfiles": { "javascriptreact": "jsx" }
  • 验证是否生效:输入 div{hello} + Tab,应输出 {hello}

组件名缩写失效?检查 emerald.variables 是否覆盖了 component

想用 cc 展开成 ,得先定义变量。VSCode 默认不预置组件缩写,必须手动配。

settings.json 中加入:

"emerald.variables": {
  "component": "MyComponent"
}

然后输入 cc + Tab 即可。注意:

  • cc 是你自定义的缩写,不是内置关键字;真正起作用的是 component 这个变量名
  • 若项目用函数组件且命名规范(如 Button, Modal),建议按需动态配,避免全局污染
  • 多个组件需分别定义:"button": "Button", "modal": "Modal",再用 btnmd 触发

Emmet 在 .tsx 文件中行为异常?优先检查 TypeScript 版本与插件冲突

部分用户反馈在 .tsxul>li*3 展开后多出 key 属性或报错,这通常不是 Emmet 本身问题,而是 ESLintPrettier 的实时格式化干扰了缩写过程。

临时规避方式:

  • 缩写前先禁用格式化:按 Ctrl+Shift+P → 运行 Format Document → 选 None,缩写完成后再切回来
  • settings.json 中限制格式化时机:
    "editor.formatOnType": false,
    "editor.formatOnSave": false
  • 更稳妥的做法是安装官方 ESLint 插件并配置 eslint.validate: ["javascript", "javascriptreact", "typescript", "typescriptreact"],避免语法解析错位

JSX 中的 Emmet 不是“开箱即用”的魔法,它对语言模式、变量上下文和格式化链路都敏感;最常被忽略的是右下角那个不起眼

的语言模式标签——点错一次,后面所有缩写都白配。


# linux  # react  # javascript  # java  # vscode  # js  # json  # typescript  # mac 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Android使用GridView实现日历的简单功能  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel中的withCount方法怎么高效统计关联模型数量  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  EditPlus中的正则表达式实战(6)  海南网站制作公司有哪些,海口网是哪家的?  在Oracle关闭情况下如何修改spfile的参数  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  香港服务器租用每月最低只需15元?  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  如何在Windows 2008云服务器安全搭建网站?  高防服务器租用如何选择配置与防御等级?  如何用免费手机建站系统零基础打造专业网站?  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  焦点电影公司作品,电影焦点结局是什么?  详解Android图表 MPAndroidChart折线图  浅谈javascript alert和confirm的美化  如何快速搭建高效简练网站?  iOS验证手机号的正则表达式  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  利用python获取某年中每个月的第一天和最后一天  如何挑选最适合建站的高性能VPS主机?  详解Android——蓝牙技术 带你实现终端间数据传输  Laravel如何使用查询构建器?(Query Builder高级用法)  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  太平洋网站制作公司,网络用语太平洋是什么意思?  用v-html解决Vue.js渲染中html标签不被解析的问题  JavaScript模板引擎Template.js使用详解  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  在centOS 7安装mysql 5.7的详细教程  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭