- PyScript позволяет встраивать Python в HTML с помощью WebAssembly, поддерживая мощные библиотеки, такие как NumPy и Pandas.
- Brython преобразует код Python в JavaScript, что делает его идеальным инструментом для несложных манипуляций с элементами DOM и SVG.
- WebAssembly — это ключевая технология, позволяющая компилируемым языкам программирования работать в сети с производительностью, близкой к нативной.
- Для обработки серверной логики существуют традиционные серверные альтернативы, такие как Flask и Django.

Возможность использовать возможности Python в браузерной среде давно была мечтой многих разработчиков. До недавнего времени, если вам нужно было что-то запустить в веб-среде, JavaScript был бесспорным лидером и единственным жизнеспособным вариантом для выполнения клиентской логики без зависимости от внешнего сервера.
Однако ситуация кардинально изменилась благодаря появлению различных инструментов и стандартов, которые устраняют барьеры для бэкэнда . Сегодня существует множество способов интеграции Python с HTML, от компиляторов, которые транслируют код, до использования бинарных технологий, обеспечивающих потрясающую производительность непосредственно во вкладке вашего ведущего браузера, такого как Chrome.
PyScript: Революция «Анаконды»
Один из самых значительных шагов вперед произошел с выпуском PyScript компанией Anaconda. Этот фреймворк представляет собой просто надстройку над... Pyodide, Emscripten и WebAssembly (Wasm)Это позволяет Python работать практически незаметно на стороне клиента. Наиболее привлекательным аспектом является возможность написания кода Python непосредственно внутри пользовательских HTML-тегов, например: <py-script>что значительно облегчает создание интерактивных приложений.
Для начала просто добавьте файлы CSS и JS на PyScript в заголовок документа. Одно из его главных преимуществ заключается в том, что Он поддерживает большие библиотеки. например, NumPy, Pandas или Scikit-learn, которые можно настроить с помощью тега. <py-env>Кроме того, PyScript предлагает двусторонняя связь с использованием JavaScriptпозволяет манипулировать DOM браузера с помощью этого модуля. js Python.
Что касается интерфейса, PyScript не разочаровывает, поскольку предлагает интегрированные компоненты пользовательского интерфейса в качестве <py-button> o <py-inputbox>которые выполняют функции Python при взаимодействии с ними. Однако следует отметить, что, будучи основанными на WebAssembly, Начальное время загрузки может быть длительным. а также производительность на мобильных устройствах может быть снижена.
Brython: Python переведен на JavaScript
Если мы ищем более щадящую альтернативу с точки зрения нагрузки, Brython — это классический выбор. В отличие от PyScript, Brython — это реализация на Python 3, полностью написанная на JavaScript. перевести код на Python чтобы браузер мог это понять. Для корректной работы необходимо вызвать эту функцию. brython() в случае onload тела HTML-кода.
Brython выделяется своей способностью взаимодействовать с элементами HTML и SVG. Это достигается за счет использования объекта. document, возможно динамическое внедрение контента или рисовать геометрические фигуры на холсте SVG, используя пользовательские операторы, такие как =< для добавления узлов в дерево документа. Несмотря на свою универсальность, она имеет ограничения: Он поддерживает не все модули. является частью стандартной библиотеки и требует, чтобы ввод и вывод данных осуществлялись с помощью HTML-элементов, поскольку print() o input() Они не работают традиционным способом.
Другие варианты реализации и сравнения
Экосистема обширна, и есть другие интересные проекты. С одной стороны, есть Skulpt, который поддерживает Python 2 и 3 через JavaScript, и Transcrypt, который выступает в качестве компилятора для JavaScript, хотя последний, кажется, был забыт. Есть также VistaPython, который предлагает другой подход, используя интерпретатор байт-кода, написанный на JavaScript, и парсер, сгенерированный с помощью Antlr, что упрощает обновление до более новых версий Python.
Сравнивая подходы, мы видим, что Brython и Skulpt используют ручные парсеры, которые сложно поддерживать. В отличие от них, Pyodide (основа PyScript) — это полноценный порт CPython на WebAssembly, гарантирующий гораздо большую совместимость, хотя и ценой значительно большего размера загружаемого пакета. VistaPython пытается найти баланс между гибкостью и размером , оптимизируя профили нагрузки для обеспечения быстрой работы приложений на любом устройстве.
Традиционные методы и бэкэнд
Не всё должно происходить в браузере. Для многих наиболее надёжным способом объединения Python и HTML остаётся использование... серверные фреймворки, такие как Flask в Python или ДжангоВ этой схеме Python обрабатывает логику на сервере и отправляет сгенерированный HTML клиенту, или же выступает в качестве... REST API который обменивается данными в формате JSON с фронтендом, написанным на JavaScript. fetch o axios.
Существуют также более старые методы, такие как CGI (Common Gateway Interface), которые, хотя сейчас и считаются устаревшими из-за своей сложности, легли в основу динамического веба. Для тех, кому просто нужно представить данные, преобразование блокнотов Jupyter в HTML — это самый быстрый способ публикации технических отчетов без технических сложностей.
Движок, лежащий в основе всего этого: WebAssembly
Настоящая магия, позволяющая таким языкам, как Python, C++ и Rust, выйти в веб, — это WebAssembly (Wasm). Этот открытый стандарт позволяет выполнять бинарный код с производительностью, близкой к нативной. Благодаря Wasm такие компании, как Adobe, смогли портировать Photoshop в веб , а AutoCAD и Figma значительно оптимизировали загрузку и обработку данных.
Возможность запускать Python на стороне клиента, будь то с помощью трансляции Brython или благодаря возможностям бинарного программирования PyScript, открывает мир возможностей для создания сложных инструментов и приложений для анализа данных без необходимости установки чего-либо на компьютер пользователя, демократизируя доступ к продвинутому программированию.
Интеграция Python в веб-разработку эволюционировала от простых серверных скриптов до бинарного выполнения через WebAssembly, позволяя выбирать между легковесным преобразованием в JavaScript с помощью Brython или всей мощью PyScript и Pyodide, тем самым трансформируя наше представление о фронтенд-разработке.


