vscode添加源文件_VSCode源码自定义笔记-VSCode启动流程分析

本文详细解析了VSCode的启动流程,从入口文件package.json开始,经过src/main.js,深入到 Electron 应用的启动过程,探讨了主进程如何创建窗口,加载工作台,以及渲染进程的工作原理。通过分析,揭示了VSCode内部服务注册、窗口创建、工作区加载等关键步骤。
摘要由CSDN通过智能技术生成

从开始到窗口加载

与所有的Electron应用一样,入口点在 package.json文件中定义。

"main": "./out/main",

说明了入口文件在 out/main.js. 这个是编译出来的文件,源文件在 src/main.js。

注意对于TS文件,由于有sourcemap的映射,我们在ts中打断点就可以跳转过来。这里的js应该是编译时候直接拷贝到out目录下的,我们在src下面的文件打断点无效,应该直接在out/main.js中断点。这样使用launch vscode (Main process)的时候,断点就可以命中。这个是程序的主要入口。

类似于Electron的启动,看app的定义:

const app = require('electron').app;

还有对于Ready的事件监听函数:

app.once('ready', function () {

其中会调用 onReady() 函数。其中定义了一个startup函数,后续会根据配置的不同用不同的参数调用这个startup,但只是不同方式的启动而已。我们只需要关注 startup中的启动代码:

require('./bootstrap-amd').load('vs/code/electron-main/main', () => {

perf.mark('didLoadMainBundle');

});

这里用代码调用amd的方式来加载 vs/code/electron-main/main 模块。查看这个文件,

开头有一行import 'vs/code/code.main';,狐疑地查看了一下,只有一行import 'vs/platform/update/node/update.config.contribution'; 其中似乎是一个配置update的东西,看起来与主流程无关,先不管。奇怪这里命名为什么也叫 code.main,搞得人很紧张。

继续来看 main.ts. 文末都写了,这是主入口:

// Main Startup

const code = new CodeMain();

code.main();

在main.ts的startup中,会注册一个instan

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值