集成Python和JavaScript的最佳方法是什么?

是否有可能整合Python和JavaScript? 例如,假设您想要能够在JavaScript中定义类并从Python中使用它们(反之亦然)。 如果是这样,最好的办法是什么? 我不仅感兴趣,而且如果有人在“严肃的”项目或产品中做了这个事情

举个例子,我猜测用Jython和Rhino是可能的,但是我很好奇,是否有人真的做过这个,如果有其他平台(尤其是CPython )的解决scheme。

这里有一些东西,围绕SeaMonkey的Javascript解释器的Python包装… http://pypi.python.org/pypi/python-spidermonkey

pyjs怎么样 ?

从以上网站:

pyjs是一个面向Web和桌面的富Internet应用程序(RIA)开发平台。 使用pyjs,您可以完全使用Python编写JavaScript脚本的Web应用程序。

有两个项目允许python对象和javascript对象之间的“明显”转换,从int或float到“Number”和“str”或“unicode”的“明显”转换为string: PyV8 ,正如一位作者已经提到: python-spidermonkey 。

实际上有两个pyv8的实现 – 最初的实验是通过sebastien louisel,而第二个(在积极的开发中)是由liu。

我对这些项目的兴趣一直是把它们连接到一个python-to-javascript编译器的睡衣 ,以创build一个JIT python加速器。

所以这里有很多 – 这取决于你想做什么。

这个问题不完全是年轻的,但有一些替代scheme:

  • “ Skulpt是一个完全在浏览器中实现的Python”。
  • Brython – “用于客户端Web编程的Python 3实现”
  • RapydScript – “没有额外开销或怪癖的类似Python的JavaScript”
  • Transcrypt – “精简并且意味着Python到JavaScript的编译器,具有多重inheritance,源代码映射,静态types检查和select性运算符重载。” (也在Github上 )

如果你只是在javascript和python之间共享复杂的数据types感兴趣,请查看jsonpickle 。 它包装了标准的Python JSON库,但在序列化和反序列化Python类和其他数据types方面有一些聪明之处。

不lessGoogle App Engine项目都使用这个库。 Joose和FirePython都包含了jsonpickle。

PyExecJS能够使用PyV8,Node,JavaScriptCore,SpiderMonkey,JScript中的每一个。

>>> import execjs >>> execjs.eval("'red yellow blue'.split(' ')") ['red', 'yellow', 'blue'] >>> execjs.get().name 'Node.js (V8)' 

有一个基于JavaScriptCore的桥梁(来自WebKit),但它是相当不完整的: http : //code.google.com/p/pyjscore/

你可能也想看看PyPy项目 – 他们有一个Python到(任何)编译器,包括Python到Javascript,C和llvm。 这允许你用Python编写你的代码,然后按照你的意愿编译成Javascript。

http://codespeak.net/pypy

另外,请查看信息丰富的博客:

http://morepypy.blogspot.com/

不幸的是,你不能将Javascript转换成Python。 它似乎总体上工作得很好,他们曾经有一个在线的Bub'n'Bros游戏(尽pipe服务器已经closures了一段时间)的Javascript(由编译的Python制成)版本。

http://bub-n-bros.sourceforge.net

另一种可能性是使用XPCOM,比如说基于XUL的应用程序(如firefox,thunderbird,komodo等)

我前段时间和Pyjon一起玩,似乎设法直接在Python中编写Javascript的eval,并运行简单的程序…虽然这不是JS的完整实现,而是一个实验。 在这里获取:

http://code.google.com/p/pyjon/

使用Js2Py将JavaScript翻译成Python,这是唯一可用的工具:)