选择Python还是JavaScript?虽然很多朋友还在争论谁更强,谁的发展前景更光明,但毫无疑问,两者的竞争在Web前端领域已经有了明确的答案。基于浏览器平台,如果放弃JavaScript,我们将没有任何选择。
嗯,也许答案不是那么绝对。JavaScript已经成为许多其他编程语言的目标(相关的例子包括TypeScript、Emscripten、Cor和Cheerp)。另一方面,Python拥有庞大的跟随者群体,现有强大的库资源使其成为JavaScript转换或翻译的理想选择。
这里有四个项目可以成功地将Python带入JavaScript世界。而其中一款凭借其灵活的双向转换能力脱颖而出。
跨地穴
这是一个新兴的Python到JS的翻译器。Transcrypt对其生成的代码的质量水平做出了令人印象深刻的承诺。首先,它保留了尽可能多的原始Python代码结构,包括多重继承和lambda表达式。Python源代码也可以在JavaScript中直接调用命名空间中的对象。如果您尝试在Python中访问document.getElementById,转换后的代码也会在JavaScript中切换到document.getElementById。
根据描述文档的介绍,Transcrypt使用CPPython的抽象语法树模块来完成这些翻译任务,它可以根据Python的解析模式以编程方式访问自己的代码。尽管该项目仍处于阿尔法测试阶段,但它已经显示出惊人的吸引力。
Jiphy
所谓的Jiphy代表“JavaScript in,Python out”——,即可以在它们之间进行双向转换。此外,两种语言的代码在转换为另一种语言之前可以混合使用。
Jiphy最大的缺点是只支持Python的一部分特性集。还不支持类和默认参数,但是装饰器和异常机制可以正常使用。这主要是因为Jiphy坚持源代码和目标代码之间的线对线直接翻译,但其开发人员也开始关注ES6中的新功能,旨在将更高级的Python功能纳入支持范畴。
布立吞人
也许有一天,当网络组装的想法实现时,我们将能够为网络开发选择任何我们喜欢的语言。Brython对这个——或者至少Python 3——有自己的理解:为什么要等?
Brython通过一个JavaScript库模拟Python 3中的所有关键词和大部分内置插件,从而实现了将Python 3作为客户端Web编程方案的目标。Python编写的脚本可以直接添加到网页中,Brython还支持一套高级Python模块接口(浏览器),用于与DOM协作,浏览器通常可以直接用JavaScript完成。
但是Brython也保留了浏览器对JavaScript代码的限制,比如不支持本地文件系统的处理。
RapydScript
RapydScript承诺“不会让Python JavaScript代码变得更糟。”这个项目在概念上类似于CoffeeScript:代码以Python形式编写,生成JavaScript代码,同时发挥两者的最佳特性。在Python中,它有明确的语法规则;至于JavaScript,它有匿名函数,DOM操作,可以使用现有的JavaScript库,比如jQuery或者Node.js内核。