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


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

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

12 55

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 без дополнительных накладных расходов или причуд"
  • перевод команды - " постный и средний питон 3.6 к Компилятор JavaScript с множественным наследованием, исходными картами, статической проверкой типов и выборочной перегрузкой операторов."(также на Github)

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

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

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

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

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

довольно много проектов Google App Engine использовали эту библиотеку. Joose и FirePython Как включить jsonpickle.

PyExecJS может использовать каждый из PyV8, узел, 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 попытался решить эту проблему с помощью плагина и неязыкового способа и создал Кросс https://en.wikipedia.org/wiki/Kross_ (программное обеспечение) - в моем понимании он никогда не взлетал даже внутри самого сообщества.

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