参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

vscode.dev(!)

2021年10月20日,作者:Chris Dias, @chrisdias

早在 2019 年,当 .dev 顶级域名开放时,我们就拿下了 vscode.dev 并迅速地将其闲置,指向我们的网站 code.visualstudio.com(或者,如果你像我一样来自波士顿地区,我们会说“pahked it”)。就像很多购买 .dev 域名的人一样,我们当时并不知道要用它来做什么。我们当然也未曾预料到,它最终会实现一个酝酿了十多年的使命。

将 VS Code 引入浏览器

快进到今天。现在,当你访问 https://vscode.dev 时,你会看到一个轻量级的 VS Code 版本,它完全在浏览器中运行。在你本地机器上打开一个文件夹,然后就可以开始编码了。

无需安装。

vscode.dev running in the browser

随着 vscode.dev 的推出,我们终于开始实现最初的愿景——构建一个可以在浏览器中完全无服务器(serverless)运行的开发工具。想要了解完整的历史,请观看 Erich Gamma 在 VS Code Day 上的演讲 “VS Code 的一夜成名……十年磨一剑”

那么,你能在网页版 VS Code 上做什么呢?其实能做的相当多……

使用云工具进行本地开发

"The Cat said No" application source code in vscode.dev

支持文件系统访问 API 的现代浏览器(目前是 Edge 和 Chrome)允许网页访问本地文件系统(需要你的许可)。这个通往本地机器的简单入口,迅速为将网页版 VS Code 用作零安装的本地开发工具开启了一些有趣的场景,例如:

  • 本地文件查看和编辑。用 Markdown 快速做笔记(并预览!)。即使你在一个受限制的机器上无法安装完整的 VS Code,你仍然可以使用 vscode.dev 来查看和编辑本地文件。
  • 结合浏览器调试工具,构建客户端的 HTML、JavaScript 和 CSS 应用程序。
  • 在性能较低的机器上(如 Chromebook)编辑代码,这些设备上你无法(轻易)安装 VS Code。
  • 在你的 iPad 上进行开发。你可以上传/下载文件(甚至可以使用“文件”应用将它们存储在云端),也可以通过内置的 GitHub Repositories 扩展远程打开仓库。

而且,如果你的浏览器不支持本地文件系统 API,你仍然可以通过浏览器的上传和下载功能打开单个文件。

Local File System Access is Unsupported message dialog

更轻量级的体验

由于网页版 VS Code 完全在浏览器内运行,与桌面应用相比,某些体验自然会受到更多限制。例如,终端和调试器是不可用的,这很合理,因为你无法在浏览器沙箱中编译、运行和调试 Rust 或 Go 应用程序(尽管像 Pyodide 和 WebAssembly 容器这样的新兴技术未来可能会改变这一点)。

代码编辑、导航和浏览体验则更为微妙。在桌面上,这些体验通常由期望有文件系统、运行时和计算环境的语言服务和编译器来驱动。而在浏览器中,这些体验则由*完全在浏览器中运行*的语言服务提供(没有文件系统,没有运行时),它们提供源代码的词法分析、语法高亮、自动补全以及许多单文件操作。

因此,在浏览器中,体验通常分为以下几类:

良好:对于大多数编程语言,vscode.dev 为你提供代码语法高亮、基于文本的自动补全和括号对着色。通过使用 Tree-sitter 语法树,我们能够为 C/C++、C#、Java、PHP、Rust 和 Go 等流行语言提供额外的体验,例如大纲/转到符号符号搜索

更好:TypeScript、JavaScript 和Python 的体验都由原生在浏览器中运行的语言服务提供支持。对于这些编程语言,你将获得“良好”体验之外,还有丰富的单文件自动补全、语义高亮、语法错误提示等功能。

最佳:对于许多“Web”语言,如 JSON、HTML、CSS 和 LESS,vscode.dev 中的编码体验与桌面版几乎完全相同(包括 Markdown 预览!)。

扩展

大多数 UI 定制扩展,如主题、键盘映射和代码片段,都可以在 vscode.dev 中工作,你甚至可以通过设置同步功能在浏览器、桌面和 GitHub Codespaces 之间漫游设置。

那些运行 Node.js 代码、使用操作系统特定模块或调用本地可执行文件的扩展,仍然会显示在搜索结果中,但会被明确标记为不可用。

Notification that extension is not available in Visual Studio Code for the Web

话虽如此,已经有越来越多的扩展更新以支持在浏览器中运行,并且每天都有更多扩展加入。

注意:如果你是扩展开发者,并希望你的扩展在浏览器中可用(我们非常希望!),请查阅我们的Web 扩展开发指南

例如,Luna Paint - Image Editor 扩展让你能够直接在 VS Code 中编辑光栅图像。该扩展为 VS Code 带来了丰富的设计工具(例如,图层和混合工具),当然你也可以将图像保存到本地磁盘。

Luna Paint - Image Editor extension running in vscode.dev

GitHub Issue Notebooks 扩展则将 Notebook 体验带到了 GitHub Issues 中。有了它,你可以将查询、结果,甚至描述查询目的的 Markdown 内容交织在一起,形成一个单一的编辑器。

GitHub Issue Notebooks extension running in vscode.dev

GitHub

许多 VS Code 扩展都适用于存储在 GitHub 上的源代码。例如,CodeTour 扩展可以让你为代码库创建引导式导览,而 WikiLens 扩展则将 VS Code 和你的仓库变成一个强大的笔记工具(具有双向链接功能)。为了方便地访问你在 GitHub 上的代码,网页版 VS Code 内置了 GitHub RepositoriesCodespacesPull Request 扩展。你可以进行快速编辑、审查 PR,并继续到本地克隆,或者更好的选择是,到一个 GitHub Codespace 中,如果你需要更强大的语言体验,或者需要在合并提交前构建、运行和测试更改。

Continue on dropdown showing Clone Repository Locally or Create New Codespace

哇,听起来很像 github.dev,不是吗?它们有区别吗?是一样的吗?为什么有两个?

好问题!github.dev 是网页版 VS Code 的一个定制实例,它与 GitHub 深度集成。登录是自动的,URL 格式遵循 github.com 的 /organization/repo 模型,所以你只需将 .com 改为 .dev 就可以编辑一个仓库,并且它为 GitHub 定制了浅色和深色主题。

除了 GitHub 上的仓库,网页版 VS Code 还支持 Azure Repos(Azure DevOps 的一部分)。为了同时支持两者,网页版 VS Code 支持两个路由:vscode.dev/githubvscode.dev/azurerepos。不过你不需要记住这些,只需在你拥有的任何 URL 前面加上“vscode.dev”即可。

例如,将 https://github.com/microsoft/vscode 改为 ‘https://vscode.dev/github.com/Microsoft/vscode’。

对于 Azure Repos,也是同样的操作。将 https://dev.azure.com/… 改为 ‘https://vscode.dev/dev.azure.com /…’。

目前,对 Azure Repos 的支持仍处于读取仓库的预览模式,但我们正在努力尽快带来完整的读/写功能。

如果你不使用 GitHub 或 Azure DevOps,对其他仓库托管服务的支持可以通过扩展来提供,就像在桌面版上一样。如上所述,这些扩展需要支持在浏览器中完全运行。

说到 URL…

就像在桌面版中一样,你可以通过一个丰富的扩展生态系统来定制网页版 VS Code,这些扩展几乎支持所有后端、语言和服务。与桌面版不同的是,我们可以通过独特的 vscode.dev URL(如前述的 vscode.dev/githubvscode.dev/azurerepos)轻松地提供预装了扩展的定制体验。

例如,试着访问 https://vscode.dev/theme/sdras.night-owl

Night Owl color theme in vscode.dev

在这里,你可以“实时”体验由 @sarah_edo 开发的流行 Night Owl 颜色主题,而无需经历下载和安装过程,仅仅为了看看你是否喜欢它。无需安装!如果你是主题作者,你甚至可以在你的 README.md 文件中创建一个徽章,让用户可以直接从 Marketplace 试用你的主题(在网页版 VS Code 用户指南中了解更多信息)。

请随意使用这个 URL 与朋友分享你最喜欢的主题。就我个人而言,我是 @wesbosCobalt2 主题的忠实粉丝,可以看看 https://vscode.dev/theme/wesbos.theme-cobalt2。注意,theme URL 仅适用于完全声明式(无代码)的主题。

正如你所见,vscode.dev URL 是我们提供新的、轻量级体验的强大方式。另一个例子是,Live Share 访客会话也将通过 https://vscode.dev/liveshare URL 在浏览器中可用。sessionId 将被传递给扩展,使加入过程无缝衔接。

Live Share dialog with option to join session from the browser

vscode.dev URL 的可能性是无穷的,我们有很多想法,并期待在未来几个月与大家分享。

下一步去向何方?

将 VS Code 引入浏览器是该产品最初愿景的实现。它也是一个全新愿景的开始。一个可供任何拥有浏览器和互联网连接的人使用的临时编辑器,为未来我们能够真正地在任何地方编辑任何东西奠定了基础。

敬请期待更多…… 😉

编程愉快,

Chris

又及:如果你错过了,可以观看我们的网页版 VS Code 直播。