Solely Framework SupportVS Code 扩展,为 Solely 框架的 HTML 模板提供语法高亮、代码补全、智能跳转、悬停提示和错误诊断。 功能总览
语法高亮打开任意 HTML 模板文件即可自动启用,支持以下语法着色: 插值表达式
控制流标签
事件与属性绑定
指令
生命周期
支持 模板引用
代码补全在 HTML 模板中输入时自动触发补全:
|
| 模板表达式 | 跳转目标 |
|---|---|
this.method() |
TS 类方法定义 |
this.prop |
TS getter 定义 |
this.prop.method() |
链式调用:先找属性类型,再跳转到对应类的方法 |
$data.prop |
super({...}) 或 interface 中的属性定义 |
$data |
数据定义(interface/BaseElement</super({) |
ref="xxx" |
TS 中 this.$refs.xxx 的使用位置 |
s-model="prop" |
同 $data.prop,跳转到属性定义 |
跳转支持继承链:如果当前组件类中找不到定义,会自动向上查找父类文件。
悬停提示
鼠标悬停在模板中的标识符上,显示相关信息:
| 悬停目标 | 显示内容 |
|---|---|
this.method() |
方法签名 + 来源类 + 跳转提示 |
this.prop |
getter 类型 + 来源类 + 跳转提示 |
$data.prop |
属性类型 + 定义位置 + 跳转提示 |
$data |
响应式数据说明 |
ref="xxx" |
模板引用说明 + this.$refs.xxx 访问方式 |
错误诊断
打开 HTML 模板时自动检查以下问题:
控制流标签配对
<!-- ✅ 正确 -->
<If test="...">...</If>
<!-- ❌ 错误: <If> 未闭合 -->
<If test="..."
>...
<!-- ❌ 错误: <ElseIf> 必须在 <If> 或 <ElseIf> 之后 -->
<div>内容</div>
<ElseIf test="...">...</ElseIf></If
>
插值表达式闭合
<!-- ✅ 正确 -->
<span>{{ $data.name }}</span>
<!-- ❌ 错误: 未闭合的插值 -->
<span>{{ $data.name </span>
属性语法
<!-- ❌ 警告: @click 值未加引号 -->
<button @click="this.handleClick()">点击</button>
HTML 引用诊断
检查模板中引用的方法和数据属性是否在 TS 组件中存在,帮助发现拼写错误:
<!-- ❌ 错误: 方法 'hanldeClick' 在组件及其父类中未定义 -->
<button @click="this.hanldeClick()">点击</button>
<!-- ❌ 错误: 数据属性 'nweTodo' 在 super({}) 或 interface 中未定义 -->
<span>{{ $data.nweTodo }}</span>
<!-- ✅ 不报错: 框架内置成员($emit/$nextTick 等)自动跳过 -->
<button @click="this.$emit('change')">触发事件</button>
诊断采用保守策略,避免误报:
- 只检查
this.method()(带括号)和$data.prop - 跳过
$开头的框架内置成员 - 检查继承链(组件类 + 所有父类)
- 无法解析
super({})时跳过$data.xxx检查
HTML ↔ TS 快速切换
通过命令面板在 HTML 模板和对应的 TS 组件之间一键切换:
- 按
Ctrl+Shift+P打开命令面板 - 输入
Solely: 切换到对应文件 - 执行后自动跳转到对应文件
- 在 HTML 模板中执行 → 跳转到对应的 TS 组件
- 在 TS 组件中执行 → 跳转到对应的 HTML 模板
扩展通过解析 import template from './xxx.html?solely' 或 ?raw 自动建立关联。
模板关联机制
扩展通过以下方式自动关联 HTML 模板与 TS 组件:
- HTML → TS:在 HTML 文件所在目录搜索 TS 文件,匹配
import template from './xxx.html?solely'或?raw语句 - TS → HTML:解析 TS 文件中的模板导入语句,定位 HTML 文件
- 支持各种相对路径:
./、../、./templates/等路径格式均可识别
// TS 组件中的模板导入(两种方式均可)
import template from './index.html?solely'; // 框架预编译
import template from './index.html?raw'; // 原始字符串
@CustomElement({
tagName: 'my-component',
template,
})
class MyComponent extends BaseElement<MyData> {
// ...
}
安装
方式一:通过 VS Code 扩展面板安装(推荐)
按 Ctrl+Shift+X 打开扩展面板,搜索 "Solely Framework Support" 即可安装。
方式二:通过命令行安装
code --install-extension solely.solely-vscode
方式三:从源码构建
cd vscode-extension
npm install
npm run compile
# 按 F5 启动扩展开发宿主
使用
安装后,在 Solely 项目中打开任意 HTML 模板文件即可自动启用,无需额外配置。
扩展支持单引号和双引号属性值:
<!-- 两种写法均可识别 -->
<input ref="inputRef" />
<input ref="inputRef" />
版本要求
- VS Code
>= 1.85.0 - 项目需使用
import template from './xxx.html?raw'或?solely方式导入模板
问题反馈
如有问题或建议,请在 GitHub Issues 提交。