摘要: WEB IDE新时代!

Fundebug按照原文要求转载,版权归原作者所有。

众所周知,Visual Studio Code 是基于 Electron 的,而Electron 又是一个“双头怪”——基于 Web 技术的桌面应用平台。但在最近,Coder 的开发者最近做了有趣的尝试,让我们可以把整个 VSCode 放到浏览器中去运行,并且我们也可以很容易地去亲身体验他们的工作成果。如果你有兴趣的话,不妨跟我一起尝试一下。

本地运行服务

简单地说,CoderVSCode 进行了一些修改,以允许其作为可托管的 Web 服务来运行,该服务称为 Code-Server。要在我们自己的机器上运行该服务,目前有两种用法:基于 Docker 容器,或者自己下载运行服务程序。

以下示例均基于 Coder 当前版本(1.691)。后续版本中可能会发生变化,因此如果运行有问题的话,建议参考 Coder 官网

基于 Docker

假如你的机器已经安装了 Docker 的话,那么该方式是最简便的。由于DockerLinux 系统支持最佳,而 Windows/MacOS 虽然也能运行但比较别扭,所以以下示例均以 Ubuntu 为环境。运行容器只需要如下一行命令(你可以自行决定在什么位置加载文件卷):

docker run -it -p 127.0.0.1:8443:8443
-v "${PWD}:${PWD}"
codercom/code-server:1.621
--allow-http
--no-auth

等待 Docker 完成容器下载和启动后,在浏览器中打开 http://localhost:8443 即可看到 VSCode 界面。对于国内环境,为提高网络速度,可考虑使用代理或国内的镜像源。

自行下载运行程序

自己下载并运行的步骤要略微麻烦一些,如果不希望使用 Docker 的话,可参考如下命令:

wget https://github.com/codercom/code-server/releases/download/1.691-vsc1.33.0/code-server1.691-vsc1.33.0-linux-x64.tar.gz
tar zxf code-server1.691-vsc1.33.0-linux-x64.tar.gz
cd code-server1.691-vsc1.33.0-linux-x64
./code-server -d $HOME --port 8443

这时控制台将输出服务器启动的日志信息,其中包含服务器的启动密码(Password),请记住该信息,以防后续输出内容太多难以找到。在后面我们要用它来登录。

启动后在浏览器中导航到 https://localhost:8443/。注意这里和 Docker 的运行方式有一点不同,本地运行时是强制使用 https 的,但使用了 Coder 开发者证书,因此如果你看到浏览器提示证书问题的话,请选择接受并继续。接下来会提示你输入控制台显示的密码:

输入密码,等服务器启动完毕后会自动进入与 Docker 方式相同的界面。

这里还有一点需要提醒。按照主流浏览器的安全策略,一旦你用 https 方式浏览了某个网站,那么后续都会要求你继续使用该方式,即使手动输入 http 前缀也会强制跳转 https。因此,如果你先用本地方式启动,再尝试 Docker 的话就会遇到无法使用的问题(因为 Docker 方式并不支持 https)。这时清空一下浏览器缓存再运行就可以了。

运行界面

无论使用哪种方式,启动后在浏览器中都会看到熟悉的界面:

如果你尝试使用一下会发现,这个 VSCode 在某种程度上是经过“魔改”的,和本地运行的 VSCode 在很多方面会有微妙的差别。比如,菜单和标题栏都是在浏览器中绘制的,不像本地程序那样使用系统 UI,而右上角的最小化/最大化/关闭按钮也是没用的。此外,打开文件/文件夹界面也是 Coder 团队提供的网页内置界面,不再是系统的文件对话框:

当然,这种行为是可以理解的,因为网页中无法直接调用操作系统 UI,因此相关功能都是 Coder 团队修改后才能正常使用的。

如果你使用 Docker 运行方式的话,那么你还会注意到其他一些不同。例如,从终端的显示你会发现该命令是运行在容器中的,所以在终端中执行的结果在容器运行结束后也不会保留下来。如果你希望保留工作结果的话,那么应当使用版本控制系统。

使用体验

那么,在浏览器中编辑的实际体验如何呢?我尝试着编辑并运行了一些程序(当然要安装对应的编译器)、修改并提交 Markdown 文件,过程非常顺畅,感觉和本地版的 VSCode 没有什么不同。

但是,至少在目前,Code-Server 存在一个重大问题:无法在 VSCode 中正常安装各种插件。我们都知道VSCode要想好用的话通常要安装大量第三方插件,这就使得该工具的使用受到了很大的限制。按照官方说明,这似乎是由于插件安装机制的一些内在限制,并且开发团队也在努力解决该问题,相信再过一段时间我们会看到一个比较完善的解决方案。

使用场景

浏览器中运行的 VSCode 可以用来干什么呢?一个很容易想象到的场景是远程/在线开发。既然我们已经可以从 Docker 容器中运行 VSCode,那么在此基础上添加必要的开发包以后,我们不难据此创建一个标准镜像,从而让开发者拥有一个统一、标准化的开发环境,本地安装、维护开发组件从此将不成为问题。这应该是很多程序员和项目管理者所乐见的。此外,在运维、在线教学等领域也可以发挥很大作用。

事实上,眼下已经有不少类似思路的 Web IDE,比如 AWS Cloud9Eclipse Che,国内也有 Coding 的 WebIDE(目前似乎是合并到了腾讯云)等。和类似产品比较起来,VSCode 的主要优势应该是有着更好的社区和生态环境,因而使用前景也更为广阔。

当然我们也看到,目前在浏览器中运行 VSCode 仍然存在一些有待解决的技术问题,因此还不适合广泛采用。但这已经是一个不小的成就,在程序员社区中已经讨论和研究多年的完全在线开发,可以说是又大大迈进了一步。

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了20亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用!

如何在浏览器中运行 VS Code?的更多相关文章

  1. 在浏览器上运行 VS Code——GitHub 热点速览 v.21.22

    作者:HelloGitHub-小鱼干 和小程序类似,如果平时开发所用到的软件也能运行在浏览器中,"用完即走"岂不妙哉?code-server 便是一个让人在浏览器运行 VS Cod ...

  2. 在浏览器中运行java applet

    最近在看java applet,在eclipse中可以正常运行,于是想试试在浏览器中运行.但途中遇到很多问题,网上很多解答也不全面,于是想把自己的解决过程记录下来. [1]首先,编写的applet程序 ...

  3. Ooui:在浏览器中运行.NET应用 Ooui.Wasm:浏览器中的.NET

    在过去数年中,桌面应用开发人员一直处境艰难,因为人们的主要关注点聚焦于Web和移动应用.由于Microsoft未来Windows平台的计划未定,并且UWP应用也没有突破性进展,因此技术落伍的责任也不应 ...

  4. Windows 配置Apache以便在浏览器中运行Python script的CGI模式

    打开httpd.conf,找到”#ScriptInterpreterSource Registry “,移除前面的注释# (如果找不到这行,就自己添加进去) 找到“Options Indexes Fo ...

  5. JS规则 编程练习 考考大家的数学,计算以下计算公式的结果。然后在浏览器中运行一下,看看结果是否跟你的结果一致。

    编程练习 考考大家的数学,计算以下计算公式的结果.然后在浏览器中运行一下,看看结果是否跟你的结果一致. 任务 第一步: 在  ? 处填写你的答案. 第二步: 填写完成后,运行一下,看看是不是跟你填写的 ...

  6. WebAssembly 浏览器中运行c/c++模块

    今天,要给前端造点儿福利 浏览器中能调用javascript,曾经我们以为够用了,够强大了,但是事实上是完全不够 还好,mozilla的工程师提出了webassembly,目前是利用emsctript ...

  7. Unity生成的WebGL如何在浏览器中运行

    前言:以为在学完了COMP30019后,应该不会再接触Unity了,没想到之后实习让我去做把一个Unity项目转到WebGL,而关于Unity的WebGL资料很少,基本除了Unity的Manual就只 ...

  8. 从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行

    本文描述的是对国家统计局于2019-01-31发布的<2018年统计用区划代码和城乡划分代码(截止2018年10月31日)>中省市区三级的坐标和行政区域边界的采集. 本文更新(移步查阅): ...

  9. 从统计局采集最新的省市区镇数据,用js在浏览器中运行 V2

    本文描述的是对国家统计局于2019-01-31发布的<2018年统计用区划代码和城乡划分代码(截止2018年10月31日)>的采集. 相对于用于和采集2016版.2017版的js代码做了比 ...

随机推荐

  1. postman---postman文件夹介绍以及批量执行用例

    我们在做测试的过程中,都会多次请求接口,都会把接口保存下来,方便下次直接请求,节省时间不用每次都重新输入,我们一起看下Postman如何保存接口会话 保存请求作用 Postman可以将各个请求组合保存 ...

  2. Excel中的一列数据变成文本的一行数据

    Excel中的一列数据变成文本的一行数据 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

  3. A1010 Radix (25 分)

    一.技术总结 首先得写一个进制转换函数convert(),函数输入参数是字符串str和需要转化的进制(使用long long数据类型).函数内部知识,使用函数迭代器,即auto it = n.rbeg ...

  4. Git修改和配置用户名和邮箱

    git在push/push to时需要使用到user.name和user.email,切记一定要现配置好查看user.name/user.email git config user.name git ...

  5. telnet: Unable to connect to remote host: No route to host

    用iptables -F这个命令来关闭防火墙,但是使用这个命令前,千万记得用iptables -L查看一下你的系统中所有链的默认target,iptables -F这个命令只是清除所有规则,只不会真正 ...

  6. Clickhouse单机部署以及从mysql增量同步数据

    背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重,再说我也搞不定,那只能 ...

  7. NLP第二课(搜索)

    最近压力太大了,持续性修改0注释的代码,变量为阿拉伯数字的代码,压力山大,摆正心态,没有那些bug,还需要我们来做些什么呢?如果一个特别出色的项目,也体现不出来你个人的出色.几句牢骚,我们今天来继续说 ...

  8. CSS教程详解

    CSS学习笔记 一.CSS基础 1.CSS简介 层叠:一层一层的: 样式表:很多的属性和样式 CSS语法: <style> 选择器 { 属性名:属性值; 属性名:属性值; ……  } &l ...

  9. 端口快速扫描程序(c#版 一次可发起1000个连接)

    前言 为了探测本机或对方开放了哪些端口,需要用到端口扫描程序.扫描端口的原理很简单:就是尝试连接对方:如果成功,对方就开放了此端口.扫描程序的关键是速度,如果一次只能发起几个连接,显然速度太慢.如果对 ...

  10. C#网页 截图

    using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Threading; using S ...