首先,我们来看一下一级目录:
vscode
├── build - 构建相关代码
├── extensions - 内置插件位置
├── resources - 静态资源
├── scripts - 启动或者编译脚本位置
├── src - 源代码目录
├── test
├── package.json
└── yarn.lock
上述标记出来的为比较主要的目录,我们先看这些吧。
接下来,我们主要去看 src 目录。
├── main.js 主进程启动入口文件
├── tsconfig.base.json
├── tsconfig.json
├── tsconfig.monaco.json
├── typings
│ ├── require.d.ts
│ └── thenable.d.ts
└── vs
├── base # 工具类位置
├── code # 核心代码位置
├── editor # 编辑器UI
└── workbench #
├── platform
editor和workbench内容比较多,不大好定型具体是啥,后续继续看吧,我们可以从核心的代码 code目录进行解读。
Code
├── browser
│ └── workbench
├── buildfile.js
├── electron-browser # 浏览器环境代码
│ ├── sharedProcess
│ └── workbench
├── electron-main # 主进程代码
│ ├── app.ts
│ ├── auth.ts
│ ├── auth2.ts
│ ├── main.ts
│ ├── sharedProcess.ts
│ └── window.ts
├── electron-sandbox # 这个目录下我就看过 processExplorer 是一个监控进程、cpu 内存的窗口
│ ├── issue
│ ├── processExplorer
│ ├── proxy
│ └── workbench
├── node # node 环境代码
│ ├── cli.ts
│ ├── cliProcessMain.ts
│ └── shellEnv.ts
└── test # 测试代码
├── electron-main
└── node
整体上目录结构还是比较清晰的,按照环境来进行了目录结构的划分。
接下来,在看源码之前,我们得学习这些东西,可能才能看得懂,这也是我学习 vscode 很久之后的总结,接下来也会按照如下的内容进行分享:
- IOC 机制(如果知道 java 的 spring 都知道它是依赖注入,这里则是在 js 中的一个实现)
- 事件机制
- Electron IPC 通信机制设计
- Disposable 对象
- 可取消的 Promise
- 延迟实例化