其实有挺长一段时间没有写自己的 VS Code 插件了!

还是要感谢我们 DevDiv 组的 Flexible Friday 活动,让我可以在工作日研究自己感兴趣的项目。

Flexible Friday:今天,上班不干活!

我的 Flexible Friday 是一个Hack类型项目:

Run Any Language in Browser (Code Runner for Web)

Flexible Friday 是每个月一次的,上个月是第一次。但是自从开始调研这个项目后,觉得还是很有意思的!于是这周周六,准备搞一个 PoC 出来!

我,选择了世界上第二好的语言 —— Python。

其实在之前的文章,我也说过了,现在主流的所谓的在浏览器运行任何语言的方式主要是两种:

  • 浏览器只是个展示和交互层,真正的编译和运行还是在后端。

  • 相对进步不少的是:在后端把代码编译成 WebAssembly,然后在浏览器中运行。

然而,这两种方式都少不了 server 端的支持。那么,有没有方法可以不用后端,整个编译(或者解释)和运行都放在浏览器呢?

我对不同语言都进行了调研。然后,发现了 Pyodide:

https://github.com/pyodide/pyodide

这个项目最初由 Mozilla 主导开发,现在已经是独立的开源项目了!

通过 Emscripten,Pyodide 把 CPython 解释器预先编译成 WebAssembly,使得 Python 文件可以运行!

既然找到了方法,那就赶紧实现一个 VS Code 插件吧!

于是,花了小半天时间写好了!

那么,插件叫啥名字呢?

之前写过一个 Code Runner 插件。

我写的 Code Runner,下载量突破 3000 万了!

那么,这个新插件,就叫 Code Runner for Web 吧!

https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner-for-web

看看运行效果截图:

欢迎大家下载试用!

  • Linux,mocOS,Windows 的 VS Code 也能装。你本地没装 Python的话,也能直接运行 Python!

  • vscode.dev 和 github.dev 也都支持!

  • 不知道是不是 VS Code 插件市场的搜索有问题,直接搜 Code Runner for Web 可能搜不到。大家可以加个双引号来搜索:"Code Runner for Web"

下一步

  • 目前还支持标准的 Python 库,未来会支持更多 pip 包~

  • 未来会看看对其他语言的支持!

遇到的小坑

第一版发布到插件市场后,在 vscode.dev 试了下。发现 Edge 是正常的,但 Chrome 不行。

查了下 console log 发现这个 error:

Failed to set the 'innerHTML' property on 'Element': This document requires 'TrustedHTML' assignment.

好家伙!我在 VS Code 的 WebView 使用了 document.getElementById("my-id").innerHTML 来改页面内容,竟然到了 Chrome 就行不通了!

不过,难不倒我 workaround 小能手!

放弃 h2 标签,改用 input + disabled 大法!使用 document.getElementById("my-id").value

轻松解决!

项目已经开源,也欢迎大家来围观:

https://github.com/formulahendry/vscode-code-runner-for-web


对了,我们组也在招人,欢迎和我一起来 Flexible Friday 带薪搞感兴趣的项目哈:

已内推 80 人拿到微软 offer!

 

在 vscode.dev 中直接运行 Python !纯浏览器环境,无后端!的更多相关文章

  1. C语言中调用运行python程序

    C语言中调用运行python程序: Python代码如下: 创建test.py. #!/usr/bin/python3 #test.py import sys x = ]) print x*x 注意: ...

  2. 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!

    早在 2019 年,当.dev顶级域名开放时,我们赶紧注册了vscode.dev.像许多购买.dev域名的人一样,我们不知道我们将用它做啥.反正,也占个坑吧! 将 VS Code 带入浏览器 直到今天 ...

  3. Notepad++中直接运行python

    点击进入幕布视图浏览 https://mubu.com/doc/a8VGCUfqqw 一.使用Notepad++编辑python文件,并直接运行 1.用notepad++打开python文件.或者新建 ...

  4. 使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境

    写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主 ...

  5. 在Xcode中编辑运行 Python 脚本

    http://www.zhihu.com/question/19872198 打开Xcode,File->New->Project选中OS X下的Other点击External Build ...

  6. 使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤

    安装配置 VSCode [1]安装 VSCode: 下载地址:https://code.visualstudio.com/ 根据自己电脑对应的操作系统下载对应的版本即可,至于安装过程也和一般的软件一样 ...

  7. Apache运行python cgi程序

    Apache运行python cgi程序 环境 win10 x64 专业版 Apache2.4 python 2.7 Apache安装和配置 Apache服务器的安装请自行搜索.在Apache2.4中 ...

  8. Python--day02(编程语言、运行python代码、变量)

    day01主要内容回顾 1.进制转换: 二进制: 1111  0101 1010 十六进制          f        5      a 2.内存分布:堆区 和 栈区 外来人只能访问栈区的数据 ...

  9. [SublimeText] Sublime Text 2 运行 Python 脚本中文路径解决方法

    在 SublimeText 中直接运行 Python 脚本,出现以下报错提示: Running python -u C:\Documents and Settings\Administrator\桌面 ...

随机推荐

  1. 疯狂Java基础Day1

    --每过一遍基础,都是一次提升! 太多遗忘了,慢慢补... 推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕) 推荐原因:讲的不错,会涉及到底层,也会讲讲面试. 一.注释 主要 ...

  2. 基于openeuler的openssl编程

    ------------恢复内容开始------------ 一.编译环境 我下载好之后默认安装了openssl,若未安装的可输入以下命令: wget https://www.openssl.org/ ...

  3. X264编码测试验证

    之前在做一个rtsp直播需求,其中一个方案是要用的x264来对摄像头数据进行实时编码推流,摄像头帧率是25fps,为了验证方案的可行性,先对x264的编码速度进行一个测试研究,再确认是否要采用此方案. ...

  4. 021中国大学生程序设计竞赛(CCPC)- 压力测试赛题解

    A.Matrix 挺狗的一道题,从开始冲到最后都没冲出来,都没啥思路. 其实分开考虑每个数的贡献,这个想法也存在过,就是不知道该怎么计算,我们考虑我们单独考虑一个数字\(i(1\leq i\leq n ...

  5. i love dingning

    "如果你爱一个人,不是下课给人家买买水,不是短信发来发去,也不是周末一起出来唱唱歌聊聊天吃吃饭,而是做一个出色的人.以后的以后,可能还有别的人爱她,你要做的,是把别人都比下去.你要变得优秀, ...

  6. 纯 CSS 自定义多行省略:从原理到实现

    文字溢出怎么展示,你的需求是什么?单行还是多行?截断,省略,自定义样式,自适应高度?在这里你都能找到答案.接下来我会由浅入深,从原理到实现,带你一步步揭开多行省略的面纱.我们先从最简单的单行溢出省略开 ...

  7. Linux&C网络编程————“聊天室”

    从上周到现在一直在完成最后的项目,自己的聊天室,所以博客就没怎么跟了,今天晚上自己的聊天室基本实现,让学长检查了,也有好些bug,自己还算满意,主要实现的功能有: 登录注册 附近的人(服务器端全部在线 ...

  8. hdfs command

    hadoop fs -ls hdfs dfs -mkdir -p /user/$(whoami) hdfs dfs -chown -R $(whoami) /user/$(whoami) hdfs d ...

  9. [noi713]魔法

    分治,维护一个dp数组,当递归到区间[l,r]时,需要保证这个dp数组维护的是除去[l,r]以外的dp数组维护其实很简单,就是递归左区间是先将右区间加入,然后再将左区间加入(要先复原)然后递归右区间即 ...

  10. [bzoj3170]松鼠聚会

    这个距离就是切比雪夫距离,有一个神奇的东西是说将(x,y)变成(x+y,x-y),然后就是曼哈顿距离,因此转化后对x坐标和y坐标分别统计排序和求和(求前缀和预处理+二分) 1 #include< ...