2.3 Visual Studio Code的优势

在Stack Overflow发布的2019年开发者调查中(如图2-1所示),Visual Studio Code成为最受欢迎的开发工具。如果大家关注过Stack Overflow发布的2018年开发者调查,就会发现Visual Studio Code在那时就已经成为最受欢迎的开发工具,只不过是以微弱的优势领先后面的开发工具。而到了2019年,Visual Studio Code已经遥遥领先了。

图2-1 Stack Overflow发布的2019开发者调查

那么,Visual Studio Code为什么能这么受欢迎?有哪些地方是开发者所喜爱的呢?让我们从各个方面将其与当前比较主流的编辑器Sublime、Atom和Vim比较一下,并逐一分析,看一看Visual Studio Code有哪些优势。

2.3.1 学习曲线

对于任何人,特别是新手来说,一个工具的学习曲线也会影响到它的受欢迎程度。还记得Stack Overflow上著名的问题之一“How to exit the Vim editor?”吗?截至本书完稿时,它已经有接近两百万的访问量了。Visual Studio Code、Sublime和Atom在学习曲线上一定是远远比Vim要平缓的。同时,Visual Studio Code的使用文档相比于其他编辑器也是做得最好的,无论是“快速入门”还是每一个功能的使用,都在官网上写得一清二楚、有条有理。Visual Studio Code官网还提供了PDF版的键盘快捷键参考表,以便让开发者轻松上手。此外,考虑到一些开发者是从Vim、Sublime、IntelliJ或其他开发工具转过来的,依旧习惯使用原来开发工具的键盘快捷键。Visual Studio Code提供了各种键盘映射的插件,让你可以在Visual Studio Code中继续使用不同开发工具的快捷键,而不用重新学习Visual Studio Code的快捷键。

2.3.2 用户体验

Visual Studio Code提供了许多良好的开箱即用的用户体验。与Vim、Sublime和Atom一样,Visual Studio Code也提供了代码编辑的体验。此外,Visual Studio Code在保持其轻量级代码编辑器的前提下,还内置了一些IDE中会有的重要功能,如下所示。

○ Terminal(终端):内置的Terminal使得开发者可以直接在Visual Studio Code中快速地运行脚本,而不需要在Visual Studio Code和系统的Terminal之间来回切换。

○ 调试器:可以直接在Visual Studio Code中调试代码,其中的断点、call stacks、交互式的debug console使得调试变得异常简单。

○ 版本控制:开箱即用的Git支持让你可以方便地进行文件更改比较,管理你的源代码。

特别是对于前端开发者来说,Visual Studio Code对前端开发有着非常好的支持。除了对JavaScript的智能提示、重构、调试等功能的支持,它对HTML、CSS、SCSS、Less和JSON这些前端技术栈也有着很棒的支持。

Visual Studio Code曾经在某些方面的用户体验上有不足之处。比如,曾经Visual Studio Code的设置页面的体验就没有Atom好,Atom有着图形化的配置界面,而Visual Studio Code是基于JSON文件的。Visual Studio Code为此听取了用户反馈,增加了图形化的配置界面,也保留了基于JSON文件的配置方式,满足了不同人群的使用习惯。

2.3.3 性能

天下武功,唯快不破。相信从IDE转投Visual Studio Code的开发者一定对Visual Studio Code的性能非常满意。同为基于Electron开发的产品,Visual Studio Code在性能的优化上要比Atom领先许多。当然,我们必须承认的是,Visual Studio Code与Vim和Sublime相比在速度上还是有略微的差距。但是,我们依旧能看到Visual Studio Code在性能上的不断优化。从插件进程与主进程的隔离、插件的延迟加载,到Text Buffer的优化、提升大文件的加载与编辑速度、减少内存使用率,我们看到了Visual Studio Code的不断进步。

2.3.4 插件

Visual Studio Code有着丰富且规模快速增长的插件生态,如今,已经有超过10000个插件。不仅可以在中心化的插件市场获取插件,而且可以在Visual Studio Code编辑器中通过搜索,直接进行安装与管理。相比之下,Sublime只有不到5000个插件,而且在编辑器里不能很方便地搜索管理插件;Vim插件虽多,但因为没有一个中心化的插件市场,所以查找插件很麻烦;Atom有8000多个插件,比Visual Studio Code少一些,虽然在编辑器内也可以查找插件,但Visual Studio Code的搜索和浏览功能做得要比Atom好。

此外,Visual Studio Code还推出了Extension Packs,方便开发者一键安装多个插件。比较出色的Extension Pack有Java Extension Pack、PHP Extension Pack、Vue.js Extension Pack等,使得Visual Studio Code秒变IDE。

2.3.5 生态

Visual Studio Code不仅仅是一个代码编辑器,它还有着强大的生态。Visual Studio Code把它的许多重要组件抽离出来,使其成为大家都可以复用的开源产品,并与社区合作,把产品越做越好。相关协议及组件如下所示。

○ Language Server Protocol(LSP):它是编辑器/IDE与语言服务器之间的一种协议,可以让不同的编辑器/IDE方便地支持各种编程语言的语言服务器,允许开发人员在最喜爱的工具中使用各种语言来编写程序。Eclipse、Atom、Sublime Text、Emacs等主流编辑器/IDE都已经支持了LSP。具体见参考资料[4]。

○ Debug Adapter Protocol(DAP):DAP与LSP的目的类似,DAP将编辑器/IDE与不同语言的debugger解耦,极大地方便了编辑器/IDE与其他Debugger的集成。Eclipse、Emacs、Vim等已经支持了DAP。具体见参考资料[5]。

○ Monaco Editor:作为Visual Studio Code的核心组件,Monaco Editor在GitHub上已经拥有了18000多个star。国内比较有名的Cloud Studio和Gitee Web IDE等都使用了Monaco Editor。具体见参考资料[6]。

Visual Studio Code作为Visual Studio family的重要产品,与Visual Studio IDE一样,也有两大重要的功能,如下所示。

○ Visual Studio Live Share:极大地方便了协作编程,可以进行实时共享代码编辑、跟随光标、团队调试、分享本地服务器、共享终端等。

○ Visual Studio IntelliCode:通过AI赋能,根据上下文给出编程建议和智能提示,提高开发者的效率。