Hi, 这是一个有趣的小东西, 也是我的第一个技术产品, 或者它还有更广阔的未来🥰
插件市场可以搜到(speed up),
example.mp4
解析ast获取导出信息是通过单独封装npm包,所以ast所以相关操作函数都是放在这个包里
导出一般是默认导出,具名导出.但是具名导出还有声明与导出不同位置的情况
🚀 已完成的功能
- ✅ 侧边栏展示 hooks 和 utils,支持解析js/ts
- ✅ 基于配置, 默认解析src下hooks/utils文件夹,可通过setting修改解析路径
- ✅ 点击文件,跳转到对应页面
- ✅ 点击导出的内容,自动跳转到对应位置
- ✅ 点击按钮自动导入到当前文件
- ✅ 悬浮显示注释
- ✅ 构建在云端共享的hooks, utils,团队层面的共享 (云端)
- ✅ 一些交互优化
-
📦 实现拖拽能直接插入到对应位置
- 如果之前已经导入了这个文件做一个自动合并
- 需要区分默认导出还是按需导出,默认导出没有给具体的名字使用文件名
- 检查文件是否有重复导入一个文件,也就是合并
- 性能分析,为了标准通过使用转成ast,再修改ast转回源代码,这里可能会有性能瓶颈,为了更高效使用swc的tranform直接对源代码修改,因此下一步的学习方向是rust
-
📦 实现文件操作的功能
- 时间:2025/3/26 ~ now
- 状态:暂时终止
- 🕷️ 新增文件在treeview上官方没有给出暴露的接口
- 📦 拖放功能
- 📦 实现频率统计:显示每个hook或utils在项目中的使用频率
- 📦 文件/文件夹添加注释
- 📦 webview里的内容直接导入项目文件
- 🕷️ 请先打开任意一个文件,否则解析报错 ✅
- 🕷️ 暂不支持class的语法,还有一些边缘场景可能未涉及
- 🚀 使用 SWC 优化性能(技术瓶颈,转化过程会丢掉注释), 或者转向OXC
- ✨ 优化用户体验
-
📦 hook导出内容可选
- 时间:2025/4/1 ~ 2025/4/4
- 状态:已完成 hook的规范一般都一个文件默认导出一个hook函数,函数会return一些数据供外部使用,当然也可以不需要return任何东西
如果有return的话,可以勾选哪些需要,然后一键导入就只会导入勾选的内容了
-
📦
文件修改文件保存时按需刷新树节点需要考虑影响之前的缓存功能(难/阻塞) -
📦 监听对应hooks,utils文件管理器变化,实时按需更新树视图
-
- 时间:2025/3/24 ~ 2025/4/1
- 状态:已完成 vscode bug(microsoft/vscode#245035) 复杂问题梳理, 缓存+持久化+按需刷新节点
-
缓存的实现
- 解析大致流程:如果element为空代表构造根节点,否则如果element.type为目录,则解析目录之下的文件列表,返回文件列表.如果element.returnData为真,直接返回element.returnData.其他都是进行文件解析,对于hook,returnData已经保存在exportinfo里,返回exportinfo
- 将第一次解析数据放在children属性下,对于hook return的数据不需要保存,因为已经存放在returnData里
-
📦 如果树视图没有任何内容,引导用户进行操作
- 时间:2025/3/26 ~ 2025/3/26
- 状态:已完成
-
📦 进行数据缓存,减低下次启动耗时
- 时间:2025/3/24 ~ 2025/3/26
- 状态:已完成
- 🕷️ 在工作区进行持久化缓存,会丢弃不能被序列化(stringify)的内容,也就是缓存内容不能直接使用
- 🕷️ 不能通过引用的方式修改持久化缓存的数据,需要重新update数据
-
📦 构建在云端共享的hooks, utils,团队层面的共享 (云端)
- 时间:2025/3/18 ~ 2025/3/24
- 状态:已完成
- 设计并实现个人的交互功能 ✅
- 设计并实现云端的交互功能 ✅
- 响应式瀑布流 ✅
- Hooks区分Vue/React ✅