侧边栏壁纸
  • 累计撰写 79 篇文章
  • 累计创建 24 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

从 IDEA RestfulToolkit 到 Trae:一个本地开发增强插件实践

七月流火
2026-06-16 / 0 评论 / 0 点赞 / 18 阅读 / 0 字

在从 IDEA 切到 Trae / VS Code 系编辑器后,最明显的不适应之一就是:很多 IDEA 里顺手的“业务跳转能力”没有了。

比如:

  • 根据 API 路径快速定位 Spring Controller 方法
  • Mapper 接口和 XML 之间互跳
  • Service / Impl / Mapper 之间业务链路跳转
  • 多个 Spring Boot 模块组合启动
  • Vue 中通过 @/ 别名 import JS 配置时, Ctrl + 鼠标左键 跳转到导出定义
  • 在 JS / TS 文件中反查哪些 Vue 文件引用了当前导出
    这些能力单独看都不复杂,但组合起来对日常开发效率影响很大。所以基于 Trae / VS Code 插件机制做了一个本地开发增强插件: yiyang-smart-jump 。

插件仓库:

  • Gitee: https://gitee.com/duanzhaixing/vscode-local-plugin

一、插件解决了什么问题

这个插件主要围绕三个方向做增强:

1. Java 后端智能跳转

后端项目里,常见开发链路是:

IDEA 对这些跳转支持比较好,但 Trae / VS Code 默认更多依赖语言服务。遇到项目结构复杂、Mapper XML、多模块工程时,体验会弱一些。

插件补充了这些能力:

  • Controller 中调用 Service 方法时跳到 Service / Impl
  • Service 接口和 Impl 互跳
  • Impl 中调用 Mapper 方法跳到 Mapper 接口
  • Mapper 接口方法跳到 Mapper XML
  • Mapper XML 的 id 反跳回 Mapper 接口方法

2. API 路径搜索跳转

这是参考 IDEA RestfulToolkit 体验做的功能。

按快捷键:

输入接口路径,例如:

插件会扫描 Spring Controller:

  • @RequestMapping
  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping
    然后拼接类上的路径和方法上的路径,直接跳转到对应 Controller 方法。

这个功能不依赖项目启动,是静态扫描,所以适合本地快速定位接口实现。

3. Vue / JS import 跳转和反查

Vue / uniapp 项目里经常会写:

原本 Trae 里这种 @/config/app.js 不一定能稳定跳转,尤其是 .vue 文件里的别名路径。

插件现在支持:

  • 在 .vue 中 Ctrl + 鼠标左键 跳转 JS / TS 导出
  • 支持 @/ 别名
  • 支持相对路径:
    • ./xxx
    • ../xxx
  • 支持:
    • .js
    • .ts
    • .vue
    • index.js
    • index.ts
  • 支持命名导出:
    • export const xxx = ...
    • export function xxx() {}
    • export class Xxx {}
  • 支持默认导出跳转:
    • export default ...
      同时,在 JS / TS 文件中,插件会给导出变量加 CodeLens:

点击后可以反查有哪些 .vue 文件 import 了当前导出。

例如:

点击 查找 Vue 引用 后,会列出引用它的 Vue 文件,并可直接跳转。

二、组合启动能力

除了跳转,插件还实现了本地多模块 Spring Boot 组合启动。

支持能力

  • 扫描 @SpringBootApplication
  • 保存常用启动模块组合
  • 一键启动已保存组合
  • 一键 Debug 已保存组合
  • 停止全部由插件启动的模块
  • Maven 清理 / 编译 / 清理并编译
  • 支持多项目工作区
    对于多个项目放在同一工作区的场景,插件不会简单假设工作区根目录就是 Maven 根目录。

插件会:

  • 根据模块所在位置寻找最近的 pom.xml
  • 继续向上识别 Maven 聚合根
  • 按不同 Maven 聚合工程分组执行 Maven 命令
  • 避免把不同项目的模块混在一个 mvn -pl 里执行

三、Profile 处理优化

组合启动时,profile 是一个很容易出错的点。

典型问题包括:

  • 默认选择了错误 profile
  • 把某个项目的 profile 套到另一个项目
  • 某些模块被默认强制选中
  • 多项目工作区下 profile 混用
    插件现在做了优化:

1. 不再默认强制选择某些模块

只有用户保存过的模块才会默认勾选。

避免出现:

2. Profile 默认不自动乱选

如果用户选择“不指定 profile”,插件会根据模块规则处理,或者不强行指定。

这样可以避免不同项目之间 profile 混用。

四、实现方式概览

插件主要使用 VS Code Extension API 实现。

核心能力包括:

1. DefinitionProvider

用于实现 Ctrl + 鼠标左键 跳转。

插件注册了这些语言:

对应能力:

2. CodeLensProvider

用于在 JS / TS 文件中显示:

当用户点击时,插件会扫描工作区内的 .vue 文件,解析 import 语句,然后判断是否引用了当前 JS / TS 导出。

3. Command

插件注册了多个命令,例如:

其中 API 搜索跳转绑定了快捷键:

五、使用体验

API 跳转

  1. 按:
  2. 输入接口路径:
  3. 回车跳到 Controller 方法。

Vue import 跳转

在 Vue 文件中:

按住:

点击 appId ,可以跳到:

JS / TS 反查 Vue 引用

在 JS / TS 文件中:

上方出现:

点击后列出所有引用它的 Vue 文件。

组合启动

在 Trae 命令面板执行:

选择要启动的 Spring Boot 模块,保存后可以直接:

六、推荐搭配插件

这个本地插件主要解决“业务跳转”和“组合启动”问题,建议搭配下面这些插件一起用。

1. Vue - Official

适合 Vue 3 / 项目。

推荐理由:

  • Vue 语法高亮
  • 模板类型提示
  • 组件提示
  • .vue 文件语言服务支持
    如果做 Vue 3 / uniapp,建议必装。

2. TypeScript Vue Plugin / Vue Language Features

如果项目里 TS 比较多,建议配合 Vue 官方语言服务使用。

推荐理由:

  • 改善 .vue 中 TS 类型推导
  • 改善组件 props / emits 类型提示
  • 对 更友好

3. ESLint

前端项目建议安装。

推荐理由:

  • 统一代码规范
  • 提前发现未使用变量、错误 import、语法问题
  • 配合保存自动修复,减少格式问题

4. Prettier

适合统一前端格式。

推荐理由:

  • 自动格式化 Vue / JS / TS / JSON / CSS
  • 减少团队格式差异
  • 和 ESLint 搭配比较常见

5. Spring Boot Extension Pack

后端 Spring Boot 项目推荐安装。

推荐理由:

  • Spring Boot 项目识别
  • Java 启动 / Debug 支持
  • 配置文件提示
  • Spring Boot Dashboard
    本地插件负责业务链路跳转,Spring Boot Extension Pack 负责基础 Java / Spring 能力,两者互补。

6. Maven for Java

Maven 多模块项目建议安装。

推荐理由:

  • Maven 项目识别
  • Maven 生命周期操作
  • 依赖树查看
  • 和 Java Extension Pack 配合更好

7. GitLens

如果经常看历史代码,推荐安装。

推荐理由:

  • 查看每行代码是谁改的
  • 查看提交历史
  • 对排查历史问题很有帮助

8. Path Intellisense

前端项目可选。

推荐理由:

  • 路径自动补全
  • 对相对路径 import 体验更好
    不过对于 @/ 别名路径,仍然依赖项目配置和语言服务。本地插件已经补充了 @/ 跳转能力。

七、为什么不用完全依赖现成插件

现成插件能解决一部分通用问题,但实际业务项目往往有自己的复杂度:

  1. 多项目放在一个工作区里。
  2. 后端存在多个 Maven 聚合工程。
  3. 不同项目的 profile 规则不一样。
  4. 前端存在 @/ 别名和跨端目录。
  5. 需要 IDEA 风格的“按业务路径跳转”,而不是单纯语言服务跳转。
  6. 需要组合启动时只启动用户选择的模块,不能强制带上某些模块。
    所以最终更适合做一个本地定制插件,把常用业务动作固化进去。

八、目前插件已实现能力清单

Java 后端

  • Java 方法智能跳转
  • Controller -> Service / Impl
  • Service -> Impl
  • Impl -> Mapper
  • Mapper -> XML
  • XML -> Mapper
  • API 路径搜索跳转 Controller 方法

Spring Boot 组合启动

  • 扫描启动类
  • 配置模块组合
  • 启动已保存组合
  • Debug 已保存组合
  • 停止组合
  • Maven 清理 / 编译
  • 多 Maven 聚合工程分组执行
  • 多项目工作区支持
  • Profile 按模块处理

Vue / JS / TS

  • Vue import 跳转 JS / TS / Vue 文件
  • 支持 @/ 别名
  • 支持相对路径
  • 支持命名导出跳转
  • 支持默认导出跳转
  • JS / TS 中反查 Vue 引用
  • CodeLens 显示 查找 Vue 引用

九、后续可以继续增强的方向

后续还可以继续扩展:

1. 支持 import 多行写法

2. 支持 require() 跳转

3. 支持 Vue 组件引用反查

4. 支持 API 常量反查

5. 支持 Controller API 路径常量拼接

6. 支持缓存扫描结果

大型项目里,频繁全量扫描会有性能损耗。后续可以增加缓存和增量更新机制,提升搜索体验。

总结

这个插件不是为了替代语言服务,也不是为了替代成熟插件,而是补齐实际业务开发中的高频动作。

它解决的是这些问题:

  • 后端业务链路跳转不顺
  • API 路径定位 Controller 不方便
  • 多模块 Spring Boot 启动麻烦
  • 多项目工作区 Maven / profile 容易混乱
  • Vue import 到 JS / TS 配置跳转不稳定
  • JS / TS 配置不知道被哪些 Vue 页面引用
    对于 Java + Vue 3 + uniapp + 多 Maven 项目的开发场景,这类本地插件非常适合做定制增强。
0

评论区