- PyScript 允许使用 WebAssembly 将 Python 嵌入到 HTML 中,支持 NumPy 和 Pandas 等强大的库。
- Brython 将 Python 代码转换为 JavaScript,使其成为对 DOM 和 SVG 元素进行轻量级操作的理想选择。
- WebAssembly 是一项关键技术,它使编译型语言能够在 Web 上以接近原生性能的方式运行。
- 对于处理后端逻辑,也有像 Flask 和 Django 这样的传统服务器端替代方案。
将 Python 的强大功能引入浏览器环境一直是许多开发者的梦想。直到最近,如果你想让任何程序在 Web 上运行,JavaScript 仍然是无可争议的王者,也是唯一无需依赖外部服务器即可执行客户端逻辑的可行选择。
然而,随着各种工具和标准的出现,后端壁垒被打破,整个格局发生了翻天覆地的变化。如今,将 Python 与 HTML 集成的方法多种多样,从使用编译器翻译代码,到利用二进制技术直接在主流浏览器(例如 Chrome)的标签页中实现卓越的性能,不一而足。
PyScript:Anaconda 革命

Anaconda 发布 PyScript 框架是向前迈出的最重要一步之一。这个框架本质上是对底层编程语言的封装…… Pyodide、Emscripten 和 WebAssembly (Wasm)这使得 Python 几乎可以透明地在客户端运行。它最吸引人的地方在于,它允许你直接在自定义 HTML 标签中编写 Python 代码,例如: <py-script>极大地促进了交互式应用程序的创建。
首先,只需将 PyScript 的 CSS 和 JS 文件包含在文档头部即可。它的优势之一是: 它支持大型库 例如 NumPy、Pandas 或 Scikit-learn,可以使用标签进行配置。 <py-env>此外,PyScript 还提供了一个 与 JavaScript 进行双向通信允许使用该模块操作浏览器的 DOM。 js Python。
至于界面方面,PyScript 也毫不逊色,它提供了 集成式 UI 组件 如 <py-button> o <py-inputbox>当与之交互时,它们会执行 Python 函数。但是需要注意的是,由于它们基于 WebAssembly, 初始加载时间可能较长。 移动设备上的性能可能会受到影响。
Brython:Python 翻译为 JavaScript

如果我们想要一个负载更轻的替代方案,Brython 是一个经典之选。与 PyScript 不同,Brython 是一个完全用 JavaScript 编写的 Python 3 实现。 翻译 Python 代码 以便浏览器能够理解它。要使其正常工作,必须调用该函数。 brython() 在这件事上 onload HTML 主体部分。
Brython 的突出之处在于它能够与 HTML 和 SVG 元素进行交互。通过使用该对象,可以实现这一点。 document,这是可能的 动态注入内容 或者使用自定义运算符在 SVG 画布上绘制几何图形,例如: =< 向文档树添加节点。尽管它功能多样,但也存在局限性: 它不支持所有模块 标准库要求数据输入和输出必须通过 HTML 元素处理,因为 print() o input() 它们的工作方式与传统方式不同。
其他实现方式和比较

生态系统十分广泛,还有其他一些有趣的项目。一方面,有 Skulpt,它通过 JavaScript 支持 Python 2 和 3;还有 Transcrypt,它可以作为 JavaScript 编译器,尽管后者似乎已被人们遗忘。此外,还有 VistaPython,它提出了一种不同的方法,使用JavaScript 编写的字节码解释器和 Antlr 生成的解析器,从而更容易升级到更新的 Python 版本。
对比这些方案,我们发现 Brython 和 Skulpt 使用的是难以维护的手动解析器。相比之下,Pyodide(PyScript 的基础)是 CPython 到 WebAssembly 的真正移植,保证了更高的兼容性,但代价是软件包体积更大。VistaPython 则力求在灵活性和体积之间取得平衡,通过优化负载特性来确保应用程序在任何设备上都能快速运行。
传统方法和后端
并非所有操作都必须在浏览器中进行。对许多人来说,结合 Python 和 HTML 的最可靠方法仍然是使用…… 服务器框架,例如 Python 中的 Flask 或 Django在这种方案中,Python 在服务器端处理逻辑并将渲染后的 HTML 发送给客户端,或者它充当…… REST API 它使用 JavaScript 编写的前端,以 JSON 格式交换数据。 fetch o axios.
还有一些较早的方法,例如 CGI(通用网关接口),虽然现在由于其复杂性而被认为过时,但它却是动态 Web 的基础。对于那些只需要展示数据的人来说,将 Jupyter Notebook 转换为 HTML是发布技术报告最快捷、最简便的方法。
这一切背后的引擎:WebAssembly
真正让 Python、C++ 和 Rust 等语言能够触达 Web 的魔法在于 WebAssembly (Wasm)。这一开放标准使得二进制代码能够以接近原生性能的方式执行。得益于 Wasm,Adobe 等公司得以将Photoshop 移植到 Web 平台,而 AutoCAD 和 Figma 也大幅优化了数据加载和处理效率。
无论是通过 Brython 转换还是 PyScript 的二进制功能,在客户端运行 Python 的能力都为创建复杂的数据科学工具和应用程序开辟了无限可能,而无需用户在计算机上安装任何东西,从而使高级编程的普及化。
Python 在 Web 上的集成已经从简单的服务器端脚本发展到通过 WebAssembly 进行二进制执行,您可以选择使用 Brython 进行轻量级 JavaScript 转换,或者使用 PyScript 和 Pyodide 的全部功能,从而改变了我们对前端开发的理解。