您当前的位置: 首页 >  vscode

顺其自然~

暂无认证

  • 1浏览

    0关注

    1317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

VSCode

顺其自然~ 发布时间:2020-11-05 11:14:21 ,浏览量:1

Visual Studio Code (简称 VSCode / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git 等特性,支持插件扩展,并针对网页开放和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及Linux,运行流畅,可谓是微软的良心之作……

当然,微软称 VS Code 并非完整版的 Visual Studio,它只是一款轻量级的代码编辑器,而不是一个重量级的完整 IDE (集成开发环境),它的竞争对手将会是 Sublime Text、Atom、VIM、Notepad++、EditPlus 等产品。

Visual Studio Code for Mac 软件截图 

VS Code 的编辑器界面依然是微软经典的 VS 风格,对于常接触的人来说会很亲切。在编程语言和语法上支持 C++,PHP,Python,JavaScript,JSON,XML,Batch,F#,DockerFile,Coffee Script,Java,HandleBars,R,Objective-C,PowerShell,Luna,Visual Basic,Markdown,HTML,CSS,LESS,SASS,C#,TypeScript (支持情况)。

VSCode研发历程

而谈起 Web IDE,没人能绕开 VSCode,它非常流行,同时又完全开源,总共 350000 行 TypeScript 代码的巨大工程,使用了 142 个开源库。市面上选择基于 VSCode 去修改定制的 IDE 比比皆是:Weex Studio、白鹭Egret Wing、快应用IDE...

我希望从 VSCode 身上看到什么?

  • 大型复杂 GUI 软件(如 IDE 类)如何组织功能模块代码
  • 如何使用 Electron 技术将 Web 软件桌面化
  • 如何在打造插件化开放生态的同时保证软件整体质量与性能
  • 如何打造一款好用的、流行的工具软件
发展历程
  • 2015-04 (4年前) 发布
  • 2015-11 (发布之后半年)开源
  • 2019-05 发布 VSCode Remote Development

团队负责人:Erich Gamma . JUnit 作者之一,《设计模式》作者之一, Eclipse 架构师。2011 加入微软,在瑞士苏黎世组建团队开发基于 web 技术的编辑器,也就是后来的 monaco-editor。VSCode 开发团队从 10 来个人开始,早期成员大多有 Eclipse 开发团队的背景。

”探索一种全新的和桌面 IDE 一样成功的在线开发工具模式“

伴随微软整个的开放开源跨平台风潮,Erich Gamma 敏锐的决定将产品从 Browser Based IDE 转向跨平台的 Desktop IDE,但仍然使用 Web 技术,于是 electron 完美契合,VSCode 团队花了六个月使用 Electron 将 Web 编辑器桌面化,又花了六个月将整个 IDE 插件化,最终 VSCode 成为一个流行的产品同时也成为一个典型的 Electron 客户端开源项目。

产品定位

Erich Gamma 在 2017 SpringOne Platform 上有一个 关于 VSCode 的分享,讲解了在他开发 Eclipse 的过往经验基础上,对 VSCode 进行顶层设计时的诸多思路与决策,其中提到过对于 VSCode 的产品定位:

从图中可以看出 VSCode 定位是处于编辑器和 IDE 的中间并且偏向轻量编辑器一侧的。 VSCode 的核心是“编辑器 + 代码理解 + 调试“,围绕这个关键路径做深做透,其他东西非常克制,产品保持轻量与高性能。

点评: 生产力工具类的软件一定要守住主线,否则很可能会变成不收门票的游乐园 牛逼的产品背后一定有牛逼的团队,比如微软挖到 Anders Hejlsberg,接连创造了 C# 和 TypeScript 挖到 Erich Gamma,接连诞生了 monaco 和 vscode 这些明珠

二、Electron 是什么

上文提到 VSCode 有一个特性是跨平台,它的跨平台实质是通过 electron 实现的。所以我们需要先简单了解下 electron

官方定义

核心技术

 

  • 使用 Web 技术来编写 UI,用 chrome 浏览器内核来运行
  • 使用 NodeJS 来操作文件系统和发起网络请求
  • 使用 NodeJS C++ Addon 去调用操作系统的 native API
应用架构 https://electronjs.org/docs/tutorial/application-architecture

 

  • 1 个主进程:一个 Electron App 只会启动一个主进程,它会运行 package.json 的 main 字段指定的脚本
  • N 个渲染进程:主进程代码可以调用 Chromium API 创建任意多个 web 页面,而 Chromium 本身是多进程架构,每个 web 页面都运行在属于它自己的渲染进程中

进程间通讯:

  • Render 进程之间的通讯本质上和多个 Web 页面之间通讯没有差别,可以使用各种浏览器能力如 localStorage
  • Render 进程与 Main 进程之间也可以通过 API 互相通讯 (ipcRenderer/ipcMain)

点评: 普通 web 页面无法调用 native api,因此缺少一些能力 electron 的 web 页面所处的 Render 进程可以将任务转发至运行在 NodeJS 环境的 Main 进程,从而实现 native API 这套架构大大扩展了 electron app 相比 web app 的能力丰富度 但同时又保留了 web 快捷流畅的开发体验,再加上 web 本身的跨平台优势 结合起来让 electron 成为性价比非常高的方案

三、VSCode 技术架构 多进程架构

  • 主进程:VSCode 的入口进程,负责一些类似窗口管理、进程间通信、自动更新等全局任务
  • 渲染进程:负责一个 Web 页面的渲染
  • 插件宿主进程:每个插件的代码都会运行在一个独属于自己的 NodeJS 环境的宿主进程中,插件不允许访问 UI
  • Debug 进程:Debugger 相比普通插件做了特殊化
  • Search 进程:搜索是一类计算密集型的任务,单开进程保证软件整体体验与性能
关注
打赏
1662339380
查看更多评论
立即登录/注册

微信扫码登录

0.0996s