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