Лучший способ интеграции 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, как вы хотите.
кроме того, проверьте информативный блог:
к сожалению, вы не можете конвертировать Javascript в Питон сюда. Кажется, что это работает очень хорошо в целом, у них была версия Javascript (сделанная из скомпилированного Python) игры Bub'n'Bros онлайн (хотя сервер был отключен на некоторое время).
другая возможность-использовать XPCOM, скажем, в приложениях на основе XUL (например, firefox, thunderbird, komodo и т. д.)
Я играл с Pyjon некоторое время назад и, кажется, удается написать eval Javascript непосредственно в Python и запускать простые программы... Хотя это не полная реализация JS, а скорее эксперимент. Получить его здесь:
использовать Js2Py чтобы перевести JavaScript на Python, это единственный доступный инструмент:)
многие из этих проектов, упомянутых выше, мертвы или умирают, не имея активности и интереса со стороны автора. Интересно проследить, как развивается эта область.
для записи, в эпоху реализаций на основе плагинов, KDE camp попытался решить эту проблему с помощью плагина и неязыкового способа и создал Kross https://en.wikipedia.org/wiki/Kross_ (программное обеспечение) - в моем понимании он никогда не взлетал даже внутри самого сообщества.
в ходе это курица и яйцо -проблема времени, основанный на JavaScript, implementions определенно способ пойти. Возможно, в будущем мы увидим чистую и чистую, полную поддержку Python изначально в браузерах.