VScode啟動流程

2021-10-09 08:14:25 字數 2565 閱讀 9861

這裡對ready的事件監聽,

//一旦準備就緒,就載入我們的**

其中呼叫了onready()函式,跟進檢視,裡面定義了startup()函式,後續會根據配置的不同用不同的引數呼叫這個startup,但只是不同方式的啟動而已。

首先獲取快取檔案目錄位址和語言配置,然後呼叫startup

跟進startup

第185行**呼叫amd的方式來載入vs/code/electron-main/main模組,進入main process初始化流程。

這裡是先載入vscode自己開源的amd loader

然後使用這個loader去載入vscode的主入口檔案

「快捷鍵command+p」搜尋檢視這個主入口檔案

開頭就匯入了乙個配置檔案,先不管他

然後出現了乙個codemain類

翻到最後,看到這裡是主啟動入口,先初始化主類,然後執行入口函式

我們再回頭檢視這個codemain類:

main方法中呼叫startup(args)

在main.ts的startup中會建立乙個instantiationservice的例項服務。這個服務本身的實現類,通過import可以看到import from 'vs/platform/instantiation/common/instantiationservice';

跟進open()方法進入到src/vs/platform/windows/electron-main/windows.ts

滑鼠放到open()方法上

可以看到open()方法是在iwindowsmainservice中,往上幾行看iwindowsmainservice的定義

然後再根據createdecorator的作用可以知道呼叫了同目錄下的windowsmainservice,開啟src/vs/platform/windows/electron-main/windowsmainservice.ts

找到open()方法

往下看到了

這裡呼叫doopen()方法

再去看一下doopen()方法的內容

這裡多次呼叫了openinbrowserwindow()

跟進openinbrowserwindow()看到這裡建立了乙個視窗

在這方法最後,返回了乙個window,由上圖可知這是個codewindow例項

那麼現在跟進一下codewindow看看裡面到底有什麼

可以看到這裡定義了乙個load()方法

方法中有負責載入url的部分

這裡的loadurl()是electron框架中的方法,這裡不研究。geturl()則在下方**有定義

檢視geturl()方法

其返回的是configurl

檢視configurl的定義

這裡又呼叫了dogeturl()

檢視這個方法

html出現了,到此,vs code中electron的main process流程跟進完成。

至於判斷語句中,到底是啟動哪個檔案,我目前也還是不太清楚。這兩個檔案html都是相同的,不同的就是js檔案

vscode外掛程式的開發流程

前幾個月在跟著一位老師做乙個c語言考試系統,這個系統是建立在vscode的外掛程式之上的。老師的初衷是讓學生在考試的時候能有乙個本地編譯的環境,而vscode本身在配置之後就提供這樣的編譯環境。vscode配置 除錯typescript 可以先用這篇熟悉一下vscode的配置,相應的操作流程 小茗同...

vscode連線 gitee,大致流程

使用vscode管理gitee專案 配置git的username email 其中username是個人資料中的姓名 email是多郵箱管理中的我的郵箱位址 在網頁版gitee中建立倉庫 建立完成後會自動到倉庫頁面,複製倉庫位址 後期使用 vscode操作 建立空白資料夾,用vscode開啟 7.選...

uboot啟動流程概述 uboot啟動流程

u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...