VSCode需手动关联.wxml为wxml语言模式并安装minapp-vscode插件,否则无高亮补全;格式化须禁用Prettier并指定专用formatter;自定义组件补全依赖component.json、usingComponents路径准确及triggerEvent字面量调用。

VSCode 默认不识别 .wxml 文件,必须手动关联语言模式
打开任意 .wxml 文件,右下角显示 “Plain Text” 或 “HTML” 就说明没生效——这不是插件问题,是 VSCode 根本没把它当 WXML 处理。不解决这步,后续所有高亮、补全、格式化都会失效。
实操建议:
- 按
Ctrl+,打开设置,搜索files.associations,点击“在 settings.json 中编辑” - 添加这一行:
"*.wxml": "wxml"(注意不是"html") - 重启 VSCode 或重载窗口(
Ctrl+Shift+P→Developer: Reload Window) - 再打开
.wxml文件,右下角应显示 “WXML” 语言模式
装 minapp-vscode 插件,别用名字带 “wechat” 的旧插件
minapp-vscode(作者 qiu8310)是目前唯一持续维护、同时支持标签补全(如 <view>、bindtap)和 API 补全(如 wx.request、Page)的插件。其他标榜“微信小程序”的插件多数已停更,或只做基础高亮。
关键前提:
- 项目根目录必须有
project.config.json,否则插件降级为仅语法高亮 - 卸载所有非官方、非
minapp-vscode的同类插件(比如wechat-snippet、vscodewxml),避免语言服务冲突 - 自定义组件补全依赖
usingComponents路径正确且大小写一致;路径不能以/开头,不支持构建 alias(如@/components),需额外配minapp.config.js
WXML 格式化必须指定专用 formatter,禁用 Prettier 干预
VSCode 默认没有 WXML 格式化能力,且 Prettier 会强行按 JS 规则处理 .wxml,导致标签错位、属性挤成一行、<block> 被破坏等。
正确做法:
- 安装
wechat-snippet(专注 WXML 结构)或XML Tools(通用但需手动设语言模式为 XML) - 在设置中搜索
default formatter,为wxml文件类型指定上述插件 - 项目根目录加
.prettierrc,内容包含:{"ignore": ["**/*.wxml", "**/*.wxss"]} - 如果用了
redhat.vscode-xml,它不支持 WXML,会报Language client is not ready yet错误,务必卸载
自定义组件标签不补全?检查 component.json 和 triggerEvent 字面量
输入 <my-comp> 没提示,通常不是插件没装,而是 VSCode 没解析到该组件声明。补全逻辑依赖静态分析,不运行时推导。
必须满足:
-
component.json中有"component": true字段 -
usingComponents中路径与磁盘文件名完全一致(macOS/Linux 区分大小写) - 事件补全(如
bind:confirm)只认this.triggerEvent('confirm')这种字面量调用,不识别拼接字符串(如this.triggerEvent(type + 'ed')) - 若组件使用
behaviors,behavior 文件本身也得是合法组件(含Behavior()调用)
路径别名、动态注册、运行时 import 都不会被识别——WXML 补全是静态的,这点容易被忽略。



















