网站首页 > 技术文章 正文
爱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功能的一个子集,尽管这些功能(如矩阵数学)是最常用的功能之一。
学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习” 领取全套免费python学习资料、视频()装包
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)方法。
猜你喜欢
- 2024-10-23 「jQuery-5」 JavaScript对象和json
- 2024-10-23 超级好用的轻量级JSON处理命令jq(jsonpath js)
- 2024-10-23 $.ajax()常用方法详解(推荐)(ajax详细讲解)
- 2024-10-23 Jquery相关(jqueryui)
- 2024-10-23 jQuery知识点总结(jquery的认识)
- 2024-10-23 前端工程师面试题汇总(前端工程师面试题汇总怎么写)
- 2024-10-23 jQuery基础教程学习笔记(二)样式操作
- 2024-10-23 前端基础进阶(十三)详细图解jQuery扩展jQuery插件
- 2024-10-23 jQuery对象和DOM对象互相转换(jquery对象怎么转换dom对象)
- 2024-10-23 Help!AJAX到底怎么传多文件数组?知道的赶紧进来
- 11-27echarts图形报表的入门案例
- 11-27Echarts仿电梯运行图
- 11-27微信小程序开发之wepy 引入echarts统计图方法 亲测可用
- 11-27yarn安装echarts教程
- 11-27微信小程序使用 ECharts
- 11-274、echarts 如何画图?(必会)
- 11-27JavaScript 前端数据可视化——ECharts.js
- 11-27vue+echarts使用
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)