vscode 主要用 typescript 开发,运行于 electron 框架,界面由 html/css/js 构建,核心编辑能力来自自研 Monaco Editor;通过 LSP 和 DAP 协议解耦语言与调试支持,实现跨语言扩展性。

VSCode 是用 TypeScript 主要开发的,底层运行在 Electron 框架之上,界面由 HTML/CSS/javaScript 构建,核心编辑能力来自自研的 Monaco Editor(同样用 TypeScript 编写)。
主语言:TypeScript 是整个项目的骨架
TypeScript 不仅是 VSCode 的开发语言,更是其 架构 设计的关键支撑:
- 所有源码(
src/目录下)以 TypeScript 编写,利用类型系统保障大型代码库的可维护性 - Monaco Editor、语言服务协议(LSP)、调试适配器协议(DAP)等核心模块均基于 TS 实现
- 插件 API 的定义(
vscode.d.ts)也是 TypeScript 声明文件,确保扩展开发者获得强类型提示
运行框架:Electron 提供跨平台桌面能力
VSCode 并非网页应用,而是真正的桌面程序,靠 Electron 实现“Web 技术 + 系统能力”的融合:
- 主进程(
main.js或code.main.ts)使用 Node.js API 管理窗口、文件系统、系统通知等原生操作 - 每个编辑器窗口对应一个渲染进程,基于 Chromium 渲染 HTML/CSS/JS 界面,保证 ui 流畅与隔离
- 插件运行在独立的 Extension Host 进程中(node.js 环境),通过 json-rpc 与主进程通信,避免崩溃传染
编辑器内核:Monaco 是隐藏在背后的“代码引擎”
你看到的所有编辑功能——语法高亮、括号匹配、自动缩进、折叠、多光标——都来自 Monaco:
- 它最初为 visual studio Online(现 gitHub Codespaces)打造,后成为 VSCode 的嵌入式编辑器
- 完全基于 Web 技术,但深度优化:支持百万行级文件、增量渲染、Web Worker 背景解析
- VSCode 没有自己重写编辑器,而是将 Monaco 作为可配置、可扩展的组件集成到 Electron 渲染进程中
语言与调试支持:协议驱动,不绑定具体实现
VSCode 本身不内置 python、rust 或 Go 的智能提示逻辑,而是通过标准化协议对接外部服务:
- LSP(Language Server Protocol):语言功能(跳转定义、查找引用、错误诊断)由独立语言服务器提供,可本地或远程运行
- DAP(Debug Adapter Protocol):调试能力通过适配器桥接,让 VSCode 可统一控制 GDB、LLDB、Python Debugger 等后端
- 这种解耦设计使 VSCode 保持轻量,同时支持社区快速接入新语言和工具链