参考资料:
VS Code 打开文件命令:
Code
VSCode-Huawei 打开文件命令:
VSCode-huawei
-
打开一个文件
// 文件名:src/App.ts // 行号:7 // 列号:25 fetch('/__open-in-editor?file=src/App.ts:7:25')
-
通过
render
函数定义的一个组件,在配置项里添加__file
属性后,就会在devtools
里开启 Open in ... editor 按钮。而通过.vue
去生成的组件,vue-loader
会默认添加__file
属性,所以会自动开启 Open in ... editor 按钮。 -
遇到一个有趣的点:Win 平台得到的文件路径以
\
分隔,Mac 平台得到的文件路径以/
分隔。如果__file
是以反斜杠\
分隔的路径,例如src\app.ts
,那么也不会开启 Open in ... editor ,必须以斜杠/
分隔才可以。 -
旧版 Webpack 配置:
const openInEditor = require('launch-editor-middleware') module.exports = { /* ... */ devServer: { before(app) { app.use('/__open-in-editor', openInEditor('code')) }, }, }
-
新版 Webpack 配置:
const openInEditor = require('launch-editor-middleware') module.exports = { /* ... */ devServer: { setupMiddlewares(middlewares) { middlewares.unshift({ name: 'open-in-editor', path: '/__open-in-editor', middleware: openInEditor('code'), }) return middlewares }, }, }
-
待解决的问题:
- 如何获取当前页面的组件层级结构?
- 自定义 Vue devtools 面板,隐藏一些不必要的功能。先降低隐藏原有功能的优先级,优先添加自定义插件,预览当前组件层级结构。
一个普通的 JS/TS 文件的 Vue 组件,在开发环境下,Vue 内部实例化的时候会在 $options
上注入一个属性 __file
对应该组件的源文件位置。
-
在返回的
op
对象上挂载一个__file
属性,为当前文件的相对路径。但是,并不是所有文件都会返回op
这个对象,有些是封装过后的,比如以page
为例。入口文件会有一个默认导出。
// index.js function useFn() { /* ... */ } export default createComposable({ manifest, use: useFn, })
useFn
为主逻辑代码,需要对其进行封装一层。// index.js function useFn() { /* ... */ } const myUseFn = function (...args) { const res = useFn(...args) res.__file = /* 文件的相对路径 */ return res } export default createComposable({ manifest, use: myUseFn, })
对源文件进行解析的时候,需要处理
// before export default createComposable({ manifest, use: useFn, }) // after export default createComposable({ manifest, use: function(...args) { return Object.assign(useFn(...args), { __file: '' }) }, })
-
解析目标文件夹下的组件文件,文件路径以
use-xx-xx/index.ts
或者use-xx-xx.ts
结尾的,认为是组件源文件。查找当前文件里,定义的函数名格式为useXxxYyy
大驼峰格式的方法,在return
之前,给返回值注入__file
属性。同时,提供两个配置(exclude
,include
,参考),对需要匹配的文件进行灵活配置。
组件 | 是否支持 |
---|---|
MetaPage | ✓ |
MetaGrid | ✓ |
MetaForm | ✓ |
MetaContainer | ✓ |
MetaDialog | ✓ |
编辑器 | 是否支持 |
---|---|
VS Code | ✓ |
VS Code-huawei | ✓ |
WebStorm | ✓ |
IDEA |