![687fba13de5dca7fe83dea625ebe35ca.png](https://i-blog.csdnimg.cn/blog_migrate/af663b7817d91b7ec53d85824655bb96.jpeg)
点击蓝字关注我们哦~
点击“”,报名参加 4 月 11 日的 Workshop 进阶篇!
❝活动日期:2020年3月28日 会议主题:First Step to VS Code 主讲人:陈晟
❞
Part 1 前言
![98d6fa82e7865ce10e6257514395f952.png](https://i-blog.csdnimg.cn/blog_migrate/9e6f9a7f55c13264be46d300e613ebe8.png)
主讲人简介
陈晟,Software Engineer @ Microsoft:
- 现就职于微软,负责 VS Code Java 相关的开发;
- 毕业于上海交通大学网络空间安全学院;
- VS Code LeetCode 插件作者;
- 《玩转 VS Code》知乎专栏作者;
- GitHub:@jdneo
内容纲要
本次分析基础篇内容:
- VS Code 简介;
- 动手实验:VS Code 上手体验;
- VS Code 的开源社区运营之道。
而在4月11日我们将讲解进阶篇内容:
- VS Code 有哪些工程方面的亮点;
- 动手实验:VS Code 插件开发体验;
- VS Code Online, VS Code Remote & VS Code Live Share。
Part 2 正文
VS Code 简介
VS Code 前身
谈到 VS Code 不能不谈到 Erich Gamma :Eclipse JDT、 JUnit 、 设计模式 都与其有关。
Erich Gamma 于 2011 年加入微软,微软给了其一个很有趣的“任务”:"Envision new paradigms for online developer tooling that will beas successful as the IDE has been for the desktop."(定义一个能像 IDE 一样成功的在线开发工具)。
随后, Monaco Editor 诞生了,其有特点:
- 面向浏览器的文本编辑器;
- 典型应用有:
TypeScript playground
,Onedrive
, ...
Monaco Editor 便是 VS Code 的前身。
基于 Electron
框架,开发人员将 Monaco 移植到了桌面应用上来。
![cb0ceff68ede95caf53b466d04236842.png](https://i-blog.csdnimg.cn/blog_migrate/9ba4d8611f4b9b131e508b5a8b46a9cc.png)
Electron
是 GitHub 在 Chromium 浏览器、npm
包管理工具/生态等前提下,推出的框架。可以看出,Electron
集成并利用了 JavaScript
的重要特性。
使用 Electron
还意味着,有大量的 Monaco Editor 代码可以复用。
VS Code 发布
- 2015.4 移植到桌面并发布预览版
- 2015.11 开源
- 2016.4 正式版发布
VS Code 的发展可谓非常迅猛。
![a56f961844b899f10c9c2d8a687a1a15.png](https://i-blog.csdnimg.cn/blog_migrate/b56f21ef351c2e820d34f1c66395d3e2.png)
从上图 Stack Overflow 的开发者调查报告可以看出, VS Code 已经是最受欢迎的浏览器。
为什么 VS Code 如此受欢迎?
- 设计有独到的思考;
- 尊重开发者的需求;
- 明确的产品宗旨:「一切围绕 Code」。
![19459fe665f1c1734f73ab77104005f5.png](https://i-blog.csdnimg.cn/blog_migrate/0b1d73534aef60530fa6aa9b6dc8b1c2.png)
Erich Gamma 曾经在一次演讲中讨论了 VS Code 的定位,如上图。
作为编辑器,应专注于:
- 键盘控制;
- 轻量快捷;
- 文件管理;
- 多语言支持。
IDEs 应该专注于:
- 项目管理;
- 集成编译;
- 智能补全、代码片段;
- debug;
- 模板;
- 软件生命周期管理(Application lifecycle management)。
随着插件生态与 VS Code 的版本迭代, VS Code 生长得越来越集成上述二者的优点。
VS Code 学习资料
老师推荐了学习资料:
- VS Code 官网是一个很好的选择 https://code.visualstudio.com/;
- 知乎玩转 VS Code 专栏 https://zhuanlan.zhihu.com/vs-code;
- VS Code 插件开发样例- GitHub 上的代码仓库 microsoft/vscode-extension-samples;
- VS Code 中文社区微信公众号。
动手实验:VS Code 上手实验
初识 VS Code
菜单栏在上,侧边栏在左侧。
「在左下角“齿轮”按钮中:」
VS Code 的 settings 中,有不同的 scope 概念,如果 Workspace scope 中的值(要求是非省缺值)不同于 User scope ,则前者优先级高于后者。
如果是非省缺值,将以 json 形式,保存在 settings.json
中。
对于习惯了不同的编辑器/操作方式的人,可以通过选择 keymap
,下载对应的插件。
还可以通过 Keyboard Shortcuts
查看快捷键组合。
此外,可以通过 Command Palette..
输入命令的关键字,从而找到命令并调用。
此外,还可以通过 Color Theme
/插件设置主题等等。
「在左侧的 Extensions 按钮中可以管理/下载插件:」
- 尽量选择评分高、下载量大的;
- 尽量选择带有“五角星”的,因为“五角星”是官方推荐的插件。
上手操作
function hello() {
console.log("Hello, world!");
}
hello();
![3dd5d4e23b1329565c8afa002663261b.png](https://i-blog.csdnimg.cn/blog_migrate/4b8206fe5c15a8c84aa1e0ae1177b0f6.png)
VS Code 为一些语言提供了内置的代码片段。按 Tab 键可以切换焦点,避免动作上的重复与浪费,提升开发效率。
在行号前,可以打断点
。
在 Run 按钮中,可以进行 debug 。可以监测运行程序的变量等。
❝若需要调用自己的插件、配置环境怎么办?
❞
可以在 launch.json 中配置。
![451502a18f81c2cceb9472d2306e4157.png](https://i-blog.csdnimg.cn/blog_migrate/3cc4948272a80047b61b2825295a20cb.png)
如上图,可以对配置文件进行调用。
![4f67e44be5ced49a7e021276f3c52628.png](https://i-blog.csdnimg.cn/blog_migrate/ad22b7b35365ffdb25eac87da32a73ac.png)
此外,还可以使用 VS Code 的快捷键(如右键函数),进行代码重构。根据不同语言,其支撑程度不同。
![32522e98ac7f4be4fc4b3358d61b33ad.png](https://i-blog.csdnimg.cn/blog_migrate/f06c92f031bd486da0a77559d570f6ef.png)
VS Code 还可以对 git 进行匹配与管理。
问答环节:
- 插件是有分类属性的;
- 如何设置文件模板/头部文件?可以使用相关插件。比如可以在插件市场检索
header
等关键词; - 建议大家使用默认快捷键,非官方可能会有无人维护等问题。
VS Code 的开源社区运营之道
VS Code 代码仓库有多活跃?
![188b18c48efdc93bf48ef54b9de94d7c.png](https://i-blog.csdnimg.cn/blog_migrate/738387a0127c34e4b3ff9650081ea3ba.png)
截至2020-3-28,GitHub上有大概10万多条的 pull request 与 issues 。
而 VS Code 的运营团队实际只有 20 多人。
![ca3497255caaf67543711d072a5587d0.png](https://i-blog.csdnimg.cn/blog_migrate/77ded43aac85be962e4a4bbad9accff6.png)
陈老师在2017年提出了一个 issue ,VS Code 运营者认为这是一个问题,且适于社区人员修改;仅仅过了一个晚上,就有至少两个 pull request (就有至少两个人提供解决方案)。
VS Code 中还存在 Issue Bot ,可以:
- 自动检测重复的 issue ;
- 自动为 issue 添加 tag ;
- 自动关闭 issue ,省去人员排查工作,并提醒问题提出者更多地提供信息;
- 如果 issue 被关闭后很久都没有被理睬,则 issue 会被 locked 。
![4df05c1974b814c9dd45400ec9a14833.png](https://i-blog.csdnimg.cn/blog_migrate/ea68ef946ab268a681313f5d2b3257fc.png)
此外,在 VS Code 社区中提供 issue 投票机制,从而更好地了解用户最广泛的需求。
「此外, VS Code 良好的生态为其提供细分的学习交流渠道:」
- 提问题可以前往 Stack Overflow 等社区;
- Bug & Feature Request 可以在 GitHub Issue;
- 社区交流协同可以前往 Gitter 和 Slack;
- 咨询发布可以前往查看 Twitter @code。
此外,VS Code 的开发计划总是「公开透明的」。
![025919dcc1ce1b510bca808f3f88847c.png](https://i-blog.csdnimg.cn/blog_migrate/0fba980d6b9a5bc779628fa9e0b8a6e3.png)
可以在 GitHub wiki 查看开发的 Roadmap 。
此外,还通过 Iteration Plans 可以查看月度更新计划。
在 Endgame 中,会发布各事项及进度。
在每月发布的更新中,会有 Release Notes ,会有动图展示更新的重要特性,也会在文末进行致谢。
VS Code 还有很快的产品迭代:
- Stable 版本每月更新;
- 而必要时,会有 recover 版本;
- 为了快速检测、迭代,会有 Insider 版本每日更新。
Part 3 结语
题外话:圣诞门
![bfde570213b8ebe143f9a07a594d606b.png](https://i-blog.csdnimg.cn/blog_migrate/fa5beedeb8b75b271b32001e25186c19.png)
事件经过:
- VS Code Insider 发布含有圣诞帽彩蛋的更新;
- 有用户开 Issue 表示对此彩蛋感到不适;
- VS Code Insider 再次更新,将圣诞帽改为雪花;
- 更多用户开 Issue 反对这一更新(甚至包含机器人账户,“水军”);
- 无奈将代码仓库锁止,整理 Issue ,让公众情绪冷静下来;
- 提供新的配置项可让用户自定义配置按钮图案;
- 解锁,并发布公告还原事件经过。
![8dcda026ee74604b0ec2838e8ab01470.png](https://i-blog.csdnimg.cn/blog_migrate/a1eaf9c099e0644a8f5a2a6306d9654f.png)
公告可见 issues/87440 ,如上图。尽管是一个运营失误,但是 VS Code team 作为一个开源为宗旨的开发团队对待问题还是很开放的。
问答
VS Code 提供 Remote 可以连接远程服务器远程开发。
有问题或者需求的话,其实可以选择:
- 在互联网上利用搜索引擎检索(百度、谷歌);
- 在 GitHub 的 vsc 官方 repo 中检索;
- 可以在 GitHub 上提出 需求 issue 。
VS Code 能写 java 吗?当然可以:
- 需要装一些 java 的插件,可以使用 java 的插件集合 Java Extension Pack 。
进阶篇
让我们相约 4 月 11 的进阶篇!
![7dc20de2416d55128950bbdeb2811e02.png](https://i-blog.csdnimg.cn/blog_migrate/f72321f756f5530e140ae2f06e37cfe0.jpeg)
点击“”,报名参加 4 月 11 日的 Workshop 进阶篇!