在 python 和 javascript 中运行相同的代码

Posted

技术标签:

【中文标题】在 python 和 javascript 中运行相同的代码【英文标题】:Run same code in python and javascript 【发布时间】:2018-02-01 21:21:32 【问题描述】:

我在某些应用程序代码中有一个特殊情况,我需要在前端(为了响应性)和后端(为了数据完整性)上运行一些重要的验证/数学运算。我想确保它们同步,而不是两次编写代码。有没有办法同时编译python和javascript

我目前正在查看Transcrypt(python -> javascript 转译器),但主要问题是它没有太多可用的 stdlib,而且我不确定如何进行存根我自己的版本。还有一些footguns 跳舞会很烦人,比如将名为“get”的方法更改为“py_get”。

我也见过Js2Py,它采用了在python 中运行javascript 的相反方法。这似乎可能更好,因为我可以使用常规的旧 javascript 工具将我的共享代码编写为库,然后导入它并从 python 调用它。

这就是我要找的东西:

我希望能够用一种语言编写无状态应用程序库。 Clojure、python、javascript 首选,或具有两种语言绑定的通用业务逻辑 DSL。 我想同时编译为 python 和 javascript,并在这两个地方运行我的测试以确保一切正常。 我希望它在两个地方都快(我目前使用子进程从 python 调用纯 js 库,但它有点慢)。 我想访问源语言的标准库(缺少浏览器 API/系统 API),例如单元测试,功能工具。额外的库是一个加分项。

【问题讨论】:

不知道 brython 是否对您有用,如果它允许访问标准库导入,快速查看常见问题解答我会说它...brython.info 我确实看到了 Brython,但它非常专注于运行 python 来构建 Web 应用程序前端;我不需要所有的浏览器上下文、自定义的特定于 ajax 的依赖解析等。我只想要一些可以编译为 vanillajs 模块的东西,我可以使用 node/webpack 导入,并且在 python (3.6) 中未经修改即可运行。 【参考方案1】:

我最终做的是使用 javascript,通过 nodejs 通过 python 的 subprocess 模块运行它,并通过 http 请求调用它。又快又脏!为此需要处理很多小事情,包括重启死进程等。

这成功了,但我的用例的特殊性意味着它给我带来了无穷无尽的麻烦。最后,我最终将逻辑从前端取出并使用 ajax 请求从服务器获取计算。延迟非常小,因此前端保持响应足够

【讨论】:

以上是关于在 python 和 javascript 中运行相同的代码的主要内容,如果未能解决你的问题,请参考以下文章

Javascript/Python - 单击网站上的按钮并在 python 中运行函数

使用python在pycharm中运行javascript代码

Django 运行 Python 脚本并将输出传递给 javascript 文件

运行 CGI Python Javascript 以检索 JSON 对象

在Python中处理JavaScript事件

使用 Python“运行 Javascript”输入更新 Google 地图标记位置