3

近期因为工作和自身的爱好等等机缘巧合.需要对vscode进行二次魔改。
所以一直在啃vscode源码.

vscode 整体架构非常复杂,但同时源码非常清晰明了,有第三方依赖,核心模块大都是由自身实现,包括依赖注入系统、UI管理、插件服务、terminal(powershell)管理.

vscode的模块架构非常清晰.主要包含

  • extensions (插件模块.该目录下每个目录都是一个独立的插件. build/builtInExtensions.json 描述了额外依赖的远程插件
  • vs-base (基础功能模块
  • vs-code (这里还没了解是啥后续更新。代码很少
  • vs-editor ( monaco-editor...
  • vs-platform ( 这里可以理解为跟系统原生API交互的一些组件. 比如 fileDialog.. powershell. bash 啊这些..
  • vs-workbench ( 这里相当于我们看到的vscode的整个界面.下一篇文章会讲到vscode会用electron打开一个渲染进程直接载入workbench.html ...二次开发主要也是改这里

每个模块基本还会细分为三个子模块分别运行在三个不同的进程.

  • browser (UI逻辑
  • common (共享的一些逻辑. config 之类的 如果在这里写了一些依赖node 库才能运行的代码 让 browser调用了。会导致vscode卡死..
  • node (node逻辑代码
  • electron-main (运行在electron主进程的代码

不同的进程间如图采用ipc通讯
image.png


Albert
104 声望2 粉丝

Self-Taught / Backend Engineer / Lifelong learner/ Devops / Automation enthusiast / Productivity fan/ full-stack


下一篇 »
认识vscode(二)