如何将Python转换为JavaScript(然后再次转换)

Python还是JavaScript? 尽管我们仍在争论哪个拥有优势或前景更光明,但对于哪个拥有网络的前端几乎没有疑问。 它是浏览器中JavaScript或什么也没有。

好吧,也许并非没有。 JavaScript是“编译器”最喜欢的目标语言,可以将一种编程语言转换为另一种(请参阅: TypeScriptEmscriptenCheerpCor )。 而且Python的追随者和丰富的可用库使其成为转换(即转译为JavaScript)的理想之选。

[ 也在InfoWorld上:用于AI开发的6种最佳编程语言 ]

这是四个当前的使Python在JavaScript世界中有用的项目。 一个人能够在两个方向上转换而脱颖而出。

布莱顿

WebAssembly所做的承诺之一就是允许我们使用为网络开发的任何语言,尽管这仍然是一个遥远的目标。 Brython背后的哲学,至少就Python 3而言,为什么要等待?

Brython通过JavaScript库实现了用于客户端Web编程的Python 3版本,该JavaScript库模拟了Python 3的所有关键字和大多数内置函数。可以将Python编写的脚本直接包含在网页中。 Brython提供了一个高级Python模块接口( browser程序包)来与DOM和浏览器进行交互,即处理通常直接在JavaScript中完成的所有工作。

大量的实时代码示例微型应用程序展示了它们的工作原理。 甚至可以使用Brython用Python编写本机Android应用程序 。 可以使用异步功能,尽管您必须使用Brython的async模块而不是Python的asyncio

Brython无法逃脱对浏览器中JavaScript的限制。 例如,不支持处理本地文件系统。 但是,如果您所需要的只是某种方式在每个应用程序基础上保留数据,则支持使用HTML5本地存储

JavaScripthon

JavaScripthon严格专注于将Python 3.5和更高版本的代码转换为JavaScript,而没有尝试像Brython这样的项目提供完整的浏览器内支持。 它发出ES6代码以最大程度地减少浏览器端对polyfill的需求,并通过保留源映射与Webpack之类的工具很好地协作。

支持大多数Python常见的关键字和行为,包括asyncawait ,Python 3.6 f字符串以及Python类方法和继承。 如果您需要直接下拉到JavaScript,也可以通过特殊的函数调用内联插入JavaScript。

请注意,对JavaScripthon项目的最后一次提交是在2018年5月,因此它尚未获得对最新Python功能(例如“海象运算符”)的支持。 但是使用Python 3.6功能的任何人都应该得到很好的支持。

[ 同样在InfoWorld上:每个Python开发人员都有24个Python库 ]

吉菲

Jiphy名称是“ JavaScript in,Python out”的缩写。 换句话说,Jiphy在两种语言之间双向转换。 此外,可以将两种语言的代码混合在一起,然后再转换为任何一种目标语言。

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

Jiphy的最大缺点是它仅支持Python功能的一部分。 尽管支持装饰器和异常,但类和默认参数都不可用。 这主要是因为Jiphy努力在源代码和目标代码之间建立线对线的关系,但其开发人员已将ES6中新功能用于更高级的Python功能支持。

请注意,Jiphy项目自2017年末以来未进行过更新。在继续进行工作之前,应将Jiphy视为严格的试验项目。

JS2Py

顾名思义,JS2Py使用纯Python转换引擎将JavaScript转换为Python。 尽管有勇敢和大胆的实验性ES6支持,但目前它仅对ES5提供官方支持。

JS2Py支持Python和JavaScript之间的大量交叉交互。 您可以通过js2py.require方法将现有的Node.js模块导入Python代码中。 可以在Python端评估JavaScript端的变量,也可以从JavaScript代码使用Python对象。

JS2Py还包括一个高度试验性的虚拟机,该虚拟机可评估来自PythonJavaScript代码,但不建议将其用于生产。

[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]

RapydScript

RapydScript承诺“不会烂的Pythonic JavaScript”。 该项目与CoffeeScript的相似之处在于,它吸收以另一种语言(在这种情况下为Python风格)编写的代码,并生成可以在任何位置运行JavaScript。

因此,RapydScript提供了两全其美的优势,将Python的纯净语法引入了JavaScript功能(如匿名函数,DOM操作)以及利用JavaScript库(如jQuery或Node.js核心)的功能。 没错,您可以使用Rapydscript生成的代码来驱动网页或Node应用程序。

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

转加密

如果您听到了Transcrypt的名字并想到了TypeScript,那您就算离目标不远了。 Transcrypt遵循相同的基本思想-将Python转换为JavaScript。 它还尽可能地保留原始Python代码的结构和习惯用法,包括lambda和跨类的多重继承之类的结构。

此外,可以为指向原始Python的已编译代码生成源映射,因此开发人员可以使用该代码而不是生成JavaScript进行调试。 根据文档,Transcrypt通过CPython的抽象语法树模块完成这些任务,该模块允许以编程方式访问Python解析其自身代码的方式。

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

Numscrypt是一个与之相关的项目,并且仍在深入研究中 ,该项目将NumPy数学和统计资料库移植到JavaScript。 到目前为止,Numscrypt仅提供NumPy功能的一个子集,尽管这些功能(例如矩阵数学)是最常用的功能之一。 但是,Numscrypt自2018年以来未进行过更新。

翻译自: https://www.infoworld.com/article/3209651/how-to-convert-python-to-javascript-and-back-again.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值