yarn set version 1.22.1
startup
createServices
创建了下面这些main service
source
services
:创建了一个collections
通过set
的方式存新建的service
environmentMainService
:这个主要是 args,还有比如this.enviromentMainService.isBuilt
这些参数initServices
主要是初始化一些service
instantiationService
这个比较关键,它是在里面创建了一个 CodeApplication
;整个vscode
就是通过它的startup
方法来生成
mainProcessNodeIpcServer
它需要这个iPC server
;这个时候逻辑由main.ts
转入了app.ts
;同时注意这个iPC它其实是脱离在app之上的,更全局的一个startup
:
openFirstWindow
:打开第一个windowinitChannels
:
mainProcessElectronServer
:是main.ts传过来的入参sharedProcessClient
:新生成的简单方式是通过HTTP,但是这里面会有个security问题,目前vscode是通过preload scripts的方式,在创建window的时候通过webPreferences.proload
注入,然后通过contextBridge获取;main process作为中间一环串联。
ipcMain → IPCServer
ipcRenderer → IPCClient