---
title: "IDE"
date: 2018-12-29
lastmod: 2020-01-05
weight: 3
type: 
icon: #
description: "IDE"
# search related keywords
---

- 底层能力
  - Command
    - IDE基础功能模块之间一种解耦方式，同时提供部分内置命令供插件调用
  - File Service
    - 文件服务抽象，提供FS Provider接口，可以基于 Node.js fs实现本地文件读写，或基于BrowserFS、MemoryFS等实现纯前端的- 文件系统
  - Storage
    - IDE存储服务，管理IDE如用户设置及插件配置等缓存内容
  - Theme/Syntax highlighting
    - CSS variables、Textmate、vscode-oniguruma
- 支撑服务
  - 插件市场
    - Egg、OSS 、权限管控，Group、Client分组
  - 日志服务
    - spdlog
  - 更新服务
    - electron-updater、差量更新
  - 容器服务
    - K8S、Docker、Pounch
- 核心能力
  - 通信服务
    - 遵循基于JSONRPC 2.0协议，使用vscode-jsonrpc
  - 插件体系
    - 兼容VS Code插件协议，自有KAITIAN插件API扩展
  - 编辑器（LSP）
    - Monaco Editor、Language Server Protocol
  - 调试服务
    - Debug Adapter Protocol
- 功能模块
  - 资源管理
    - 文件树虚拟列表
  - Terminal
    - node-pty、xterm、断连恢复
  - SCM 源代码管理
    - 源代码管理抽象接口，通过Git等插件实现
  - Layout
    - 可扩展、高自由度、配置化插槽
- 场景
  - Local
    - 小程序开发者工具
    - ProCode开发
  - Cloud
    - 模块搭建
    - D2C
    - LowCode开发

## 相关学习资源

- 基础依赖 
- 编辑器
  - [Monaco Editor](https://github.com/microsoft/monaco-editor)
- 语法高亮
  - [vscode-oniguruma](https://github.com/microsoft/vscode-oniguruma)
- 终端
  - [Xterm.js](https://github.com/xtermjs/xterm.js)
  - [node-pty](https://github.com/microsoft/node-pty)
- 通信协议
  - [vscode-jsonrpc](https://github.com/microsoft/vscode-languageserver-node/tree/master/jsonrpc)
- LSP
  - [Language Server Protocol 官网](https://microsoft.github.io/language-server-protocol/)
  - [vscode-language-server-protocol ts 类型定义](https://github.com/microsoft/vscode-languageserver-node/tree/master/protocol)
- DAP
  - [Debug Adapter Protocol 官网](https://microsoft.github.io/debug-adapter-protocol/)
- 相关文章
  - [IDE 深入浅出系列](https://www.atatech.org/articles/148176?spm=ata.13269325.0.0.180749fa7FrW1w)
