python转javascript_如何将Python转换为javascript,然后再转换回来?(内附资料)

爱Python和爱javascript是不是一样多?这里有四个工具让你从Python,Javascript互相转换

原文来自信息世界(翻译):侵删

前言

Python和Javascript?当我们还在争辩谁占了上风或者拥有光明无限的未来,但对于谁拥有网络前端,几乎所有人认为浏览器有JavaScript或者是什么没有

嗯...也许不是什么都没有。对于将一种编程语言转换为另一种编程语言的“发起者”,JavaScript是一种最受欢迎的目标语言(请参阅:typescript、emscripten、cor、cheep)。而且,python对现有库的大量关注和丰富的资源使得它成为一个很好的候选者,可以被转换成javascript。

下面介绍四个Python在Javascript世界中拥有转换的能力工具,一个“人”能在两个方向相互转,这一点非常突出:

1.Transcrypt

如果你听到这个名字转码并认为是打字脚本,你就离标记不远了。transcrypt遵循相同的基本思想——它将python传播到javascript。它还试图尽可能保留原始Python代码的结构和习惯用法,包括像lambda这样的构造和跨类的多个继承。

更重要的是,可以为指向原始python的已发代码生成源代码映射,因此开发人员可以使用该代码而不是生成的javascript进行调试。根据文档,transcrypt使用cpython的抽象语法树模块来完成这些任务,该模块允许编程访问python解析自己代码的方式。

Transcrypt最大的优点之一是自动访问JavaScript的文档对象模型(DOM)。例如,如果您尝试在python中访问document.getElementByID,转换后的代码将使用javascript中的实际document.getElementByID。

一个相关的项目是numscrypt,它将numpy数学和统计库移植到javascript中,而这个项目仍然被大量包装。到目前为止,numscrypt只提供了numpy功能的一个子集,尽管这些功能(如矩阵数学)是最常用的功能之一。

看个人资料

2.Jiphy

Jiphy名称是“javascript in,python out”的缩写。换句话说,Jiphy在两种语言之间双向转换。另外,两种语言的代码在转换为任一目标语言之前都可以混合使用。

在深入研究并开始将所有OpenStack转换为JavaScript之前,请注意:Jiphy并不是关于全面的代码库转换。相反,正如自述文件所说,它的功能是“减少Python开发人员编写JavaScript代码所需的上下文切换,反之亦然。”

Jiphy最大的缺点是它只支持Python特性的一个子集。尽管支持修饰符和异常,但是类和默认参数都不可用。这主要是因为Jiphy坚持在源代码和目标代码之间建立尽可能近的线对线关系,但是它的开发人员已经注意到了ES6中的新特性,以获得更高级的Python特性支持。

然而,请注意,该项目自2016年初以来一直没有更新。Jiphy应该被认为是严格的实验性的,直到它的工作恢复。

3.Brython

有一天,当WebAssembly成为现实时,我们可以用任何语言为Web开发。Brython背后的哲学,至少就python 3而言,是为什么要等待?

brython通过一个JavaScript库实现了一个用于客户端Web编程的python 3版本,该库模拟了所有关键字和python 3的大部分内置功能。用python编写的脚本可以直接包含在网页中。brython提供了一个高级的python模块接口(浏览器包),用于与dom和浏览器交互,即处理通常在javascript中直接完成的所有工作。

大量实时代码示例和一系列小型应用程序演示了这一切的工作原理。甚至可以使用brython在python中编写本机Android应用程序。目前正在计划支持Python的异步功能,并最终将WebAssembly用作编译目标。

brython不能逃避浏览器中对javascript的限制。例如,不支持处理本地文件系统。但是,如果您所需要的只是在每个应用程序基础上保持数据的某种方法,那么就支持使用HTML5本地存储。

4.RapydScript

RapydScript承诺“python JavaScript不会烂。”该项目与CoffeeScript类似,它吸收用另一种语言编写的代码(在本例中是Python的一种风格),并生成可以在任何地方按原样运行的JavaScript。

因此,RapydScript提供了两个方面的优势,将Python干净的语法引入JavaScript功能,如匿名函数、DOM操作,以及利用JavaScript库(如jQuery或Node.js core)的能力。没错,您可以使用rapydscript生成的代码来驱动web页面或节点应用程序。

RapydScrypt的另一个方便特性是:如果可能,它为某些操作提供了Python和JavaScript命名。例如,jQuery使用的$ special符号在RapydScript中按原样工作,数组可以同时支持.push (JavaScript)和.append (Python)方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值