Лучший способ интеграции Python и JavaScript?

можно ли интегрировать Python и JavaScript? Например, представьте, что вы хотите иметь возможность определять классы в JavaScript и использовать их из Python (или наоборот). Если да, то каков наилучший способ? Мне интересно не только, если это возможно, но если любой сделал это в рамках "серьезного" проекта или продукта.

Я предполагаю, что это можно было бы использовать языка Jython и носорог, например, но мне любопытно, есть ли или нет кто-нибудь когда-либо делал это, и если есть решения для других платформ (особенно CPython).

12 ответов


вот что-то, оболочка Python вокруг интерпретатора Javascript SeaMonkey... http://pypi.python.org/pypi/python-spidermonkey


как о pyjs?

с вышеуказанного веб-сайта:

pyjs-это богатая платформа разработки интернет-приложений (RIA) для веб-и настольных компьютеров. С pyjs вы можете писать свои веб-приложения на JavaScript полностью на Python.


этот вопрос не совсем молодой, но есть некоторые альтернативы:

  • "Skulpt это полностью в браузере реализация Python."
  • Brython - "реализация Python 3 для клиентского веб-программирования"
  • RapydScript- "Python-подобный JavaScript без дополнительных накладных расходов или причуд"
  • Transcrypt - "худой и средний Python 3.6 для JavaScript-компилятор с множественным наследованием, sourcemaps, статической проверкой типов и выборочной перегрузкой операторов."(также на Github)

есть два проекта, которые позволяют "очевидный" переход между объектами python и объектами javascript, с" очевидными " переводами из int или float в Number и str или unicode в String:PyV8 и, как уже упоминал один писатель:python-spidermonkey.

на самом деле существует две реализации pyv8 - первоначальный эксперимент был Себастьеном луиселем, а второй (в активной разработке) - летчиком Лю.

мой интерес к этим проектам заключается в том, чтобы связать их с пижама, компилятор python-to-javascript, чтобы создать ускоритель JIT python.

Так что есть много там - это просто зависит от того, что вы хотите сделать.


Если вы просто заинтересованы в совместном использовании сложных типов данных между javascript и python, проверьте jsonpickle. Он обертывает стандартные библиотеки Python JSON, но имеет некоторые навыки сериализации и десериализации классов Python и других типов данных.

довольно много проектов Google App Engine использовали эту библиотеку. эксперимент Джуса и 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 to (anything), включая Python для Javascript, C и llvm. Это позволяет писать код на Python, а затем компилировать его в JavaScript, как вы хотите.

http://codespeak.net/pypy

кроме того, проверьте информативный блог:

http://morepypy.blogspot.com/

к сожалению, вы не можете конвертировать Javascript в Питон сюда. Кажется, что это работает очень хорошо в целом, у них была версия Javascript (сделанная из скомпилированного Python) игры Bub'n'Bros онлайн (хотя сервер был отключен на некоторое время).

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


другая возможность-использовать XPCOM, скажем, в приложениях на основе XUL (например, firefox, thunderbird, komodo и т. д.)


Я играл с Pyjon некоторое время назад и, кажется, удается написать eval Javascript непосредственно в Python и запускать простые программы... Хотя это не полная реализация JS, а скорее эксперимент. Получить его здесь:

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


использовать Js2Py чтобы перевести JavaScript на Python, это единственный доступный инструмент:)


многие из этих проектов, упомянутых выше, мертвы или умирают, не имея активности и интереса со стороны автора. Интересно проследить, как развивается эта область.

для записи, в эпоху реализаций на основе плагинов, KDE camp попытался решить эту проблему с помощью плагина и неязыкового способа и создал Kross https://en.wikipedia.org/wiki/Kross_ (программное обеспечение) - в моем понимании он никогда не взлетал даже внутри самого сообщества.

в ходе это курица и яйцо -проблема времени, основанный на JavaScript, implementions определенно способ пойти. Возможно, в будущем мы увидим чистую и чистую, полную поддержку Python изначально в браузерах.