如何将Python转换为JavaScript(然后再次转换)
Python还是JavaScript? 尽管我们仍在争论哪个拥有优势或前景更光明,但对于哪个拥有⽹络的前端⼏乎没有疑问。 它是浏览器中JavaScript或什么也没有。
好吧,也许并⾮没有。 JavaScript是“编译器”最喜欢的⽬标语⾔,可以将⼀种编程语⾔转换为另⼀种(请参阅: , , , )。 ⽽且Python的追随者和丰富的可⽤库使其成为转换(即转译为JavaScript)的理想之选。
[ ]
这是四个当前的使Python在JavaScript世界中有⽤的项⽬。 ⼀个⼈能够在两个⽅向上转换⽽脱颖⽽出。
布莱顿
如何下载javascript所做的承诺之⼀就是允许我们使⽤为⽹络开发的任何语⾔,尽管这仍然是⼀个遥远的⽬标。 背后的哲学,⾄少就Python 3⽽⾔,为什么要等待?
Brython通过JavaScript库实现了⽤于客户端Web编程的Python 3版本,该JavaScript库模拟了Python 3的所有关键字和⼤多数内置函数。可以将Python编写的脚本直接包含在⽹页中。 Brython提供了⼀个⾼
级Python模块接⼝( browser程序包)来与DOM和浏览器进⾏交互,即处理通常直接在JavaScript中完成的所有⼯作。
⼤量的和展⽰了它们的⼯作原理。 甚⾄可以使⽤Brython⽤Python编写 。 可以使⽤异步功能,尽管您必须使⽤Brython的async模块⽽不是Python的asyncio 。
Brython⽆法逃脱对浏览器中JavaScript的限制。 例如,不⽀持处理本地⽂件系统。 但是,如果您所需要的只是某种⽅式在每个应⽤程序基础上保留数据,则 。
JavaScripthon
严格专注于将Python 3.5和更⾼版本的代码转换为JavaScript,⽽没有尝试像Brython这样的项⽬提供完整的浏览器内⽀持。 它发出ES6代码以最⼤程度地减少浏览器端对polyfill的需求,并通过保留源映射与Webpack之类的⼯具很好地协作。
⽀持⼤多数Python常见的关键字和⾏为,包括async和await ,Python 3.6 f字符串以及Python类⽅法和继承。 如果您需要直接下拉到JavaScript,也可以通过特殊的函数调⽤内联插⼊JavaScript。
请注意,对JavaScripthon项⽬的最后⼀次提交是在2018年5⽉,因此它尚未获得对最新Python功能(例如“海象运算符”)的⽀持。 但是使⽤Python 3.6功能的任何⼈都应该得到很好的⽀持。
[ ]
吉菲
名称是“ JavaScript in,Python out”的缩写。 换句话说,Jiphy在两种语⾔之间双向转换。 此外,可以将两种语⾔的代码混合在⼀起,然后再转换为任何⼀种⽬标语⾔。
在深⼊研究并开始将所有OpenStack转换为JavaScript之前,请注意:Jiphy并不是关于全⾯的代码库转换的。 相反,如README所⾔,其功能是“减少Python开发⼈员编写JavaScript代码所必需的上下⽂切换,反之亦然。”
Jiphy的最⼤缺点是它仅⽀持Python功能的⼀部分。 尽管⽀持装饰器和异常,但类和默认参数都不可⽤。 这主要是因为Jiphy努⼒在源代码和⽬标代码之间建⽴线对线的关系,但其开发⼈员已将的⽤于更⾼级的Python功能⽀持。
请注意,Jiphy项⽬⾃2017年末以来未进⾏过更新。在继续进⾏⼯作之前,应将Jiphy视为严格的试验项⽬。
JS2Py
使⽤纯Python转换引擎将JavaScript转换为Python。 尽管有勇敢和⼤胆的实验性ES6⽀持,但⽬前它仅对ES5提供官⽅⽀持。
JS2Py⽀持Python和JavaScript之间的⼤量交叉交互。 您可以通过quire⽅法将现有的Node.js模块导⼊Python代码中。 可以在Python端评估JavaScript端的变量,也可以从JavaScript代码使⽤Python对象。
JS2Py还包括⼀个⾼度试验性的虚拟机,该虚拟机可评估来⾃PythonJavaScript代码,但不建议将其⽤于⽣产。
[ ]
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,那您就算离⽬标不远了。 遵循相同的基本思想-将Python转换为JavaScript。 它还尽可能地保留原始Python代码的结构和习惯⽤法,包括lambda和跨类的多重继承之类的结构。
此外,可以为指向原始Python的已编译代码⽣成源映射,因此开发⼈员可以使⽤该代码⽽不是⽣成JavaScript进⾏调试。 根据⽂
档,Transcrypt通过CPython的抽象语法树模块完成这些任务,该模块允许以编程⽅式访问Python解析其⾃⾝代码的⽅式。
Transcrypt的最⼤优势之⼀是⾃动访问JavaScript的⽂档对象模型(DOM)。 例如,如果您尝试在Python中访
问ElementById ,则转换后的代码将使⽤JavaScript中的实际ElementById 。
是⼀个与之相关的项⽬,并且仍在深⼊ ,该项⽬将NumPy数学和统计资料库到JavaScript。 到⽬前为⽌,Numscrypt仅提供NumPy功能的⼀个⼦集,尽管这些功能(例如矩阵数学)是最常⽤的功能之⼀。 但是,Numscrypt⾃2018年以来未进⾏过更新。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。