网站首页 > 技术文章 正文
爱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到底怎么传多文件数组?知道的赶紧进来
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 505℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 484℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 442℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)