社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在 vscode.dev 中直接运行 Python !纯浏览器环境,无后端!

玩转VSCode • 3 年前 • 407 次点击  

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

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

Flexible Friday:上班不干活!

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

Run Any Language in Browser (Code Runner for Web)

Flexible Friday 是每个月一次的,上个月是第一次。自从开始调研这个项目后,觉得还是很有意思的!

但是一个月一次还是有点不太够,下一次的 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,macOS,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 小能手!

放弃

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

轻松解决!

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

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

更多详情,请观看以下介绍视频:


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

已内推 80 人拿到微软 offer!


End


HJ说

大厂内推 · 职业规划 · 业界资讯

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/123972
 
407 次点击