3 веб-фреймворка Python для красивых интерфейсов

автор red


Python уже давно используется в качестве языка для серверных фреймворков с поддержкой практически любого размера проекта или варианта использования. Но исторически он ограничивался серверной частью — не существует настоящей культуры написания Python для создания пользовательского клиентского кода. По крайней мере, еще нет.

В последнее время в некоторых проектах пытались преобразовать Python в JavaScript во внешнем интерфейсе или запустить Python во внешнем интерфейсе через WebAssembly. Идея многообещающая, но то, как она реализована в настоящее время, неуклюжа и первобытна. Может быть, сейчас есть лучший вариант для разработчиков?

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

Вот три веб-фреймворка для Python, которые следуют этой парадигме. Каждый из них позволяет описывать интерфейсный код (HTML, CSS и JavaScript) внутренним кодом Python, так что интерфейсные объекты представлены через объектную модель Python.

Наковальня

Основная идея Anvil заключается в том, чтобы «создавать веб-приложения с помощью ничего, кроме питона(выделено ими). ​​С помощью Anvil вы пишете код на Python или используете инструменты Anvil для простого перетаскивания кода, и на выходе получается полноценное веб-приложение с интерактивным внешним интерфейсом на основе JavaScript и интерфейсом на основе Python. задний конец.

Anvil предлагает два основных подхода. Одним из них является облачный сервис Anvil, который доступен в различных ценовых категориях и предлагает инструменты визуальной сборки и ряд вариантов хостинга. Другой — среда выполнения Anvil с открытым исходным кодом, которая не включает визуальный конструктор, но все же позволяет создавать и запускать приложения Anvil с написанным от руки кодом.

Приложения Anvil состоят из трех компонентов: пользовательского интерфейса, который может быть либо разработан с помощью инструментов проектирования Anvil, либо выражен с помощью написанного от руки кода, кода на стороне клиента, перенесенного из Python в JavaScript, и кода Python на стороне сервера. Облачный редактор Anvil автоматически генерирует внутренний и внешний код почти так же, как такие инструменты, как Qt Design Studio.

Веб-фреймворк Anvil Python. IDG

Облачное воплощение Anvil предоставляет мощный инструмент визуального дизайна для ваших пользовательских интерфейсов. Сгенерированный код можно повторно использовать без дизайнера.

Два способа использования Anvil

Облачный редактор Anvil поставляется с несколькими включенными примерами, такими как базовое статическое приложение без внутреннего кода, простая система продажи билетов или полноценный интернет-магазин. Каждый из них может быть использован в качестве шаблона для вашего собственного проекта. Вы также получаете полезный набор готовых компонентов пользовательского интерфейса для подключения к веб-страницам. Одним из удобных компонентов является таймер для выполнения кода через определенные промежутки времени, например, для опроса источника данных на наличие обновлений. Вы также можете вручную свернуть свой собственный HTML и пользовательские компоненты, если вам это нужно. Источники данных также могут быть добавлены в облако и подключены к компонентам, поэтому общие приложения CRUD можно очень быстро собрать вместе.

Если вы решите использовать среду выполнения Anvil, вы можете писать приложения вручную и использовать один из нескольких готовых шаблонов в качестве отправной точки. Изменения в коде немедленно отражаются на сервере приложений, что ускоряет цикл разработки. Элементы пользовательского интерфейса, по сути, являются экземплярами класса Python с обработчиками событий, добавленными с помощью методов класса. Также легко программно добавить поведение с помощью хорошо продуманных общих методов. Например, если вы хотите сгенерировать событие с дочерними элементами объекта, вам не нужно для этого проходить через дочерние элементы; вы можете просто использовать raise_event_on_children метод объекта-контейнера.

По умолчанию весь JavaScript для сайта Anvil генерируется автоматически, но при необходимости вы можете написать свой собственный JavaScript. Обратите внимание, что Anvil загружает собственный код JavaScript, который может конфликтовать с написанным вами кодом. Более того, некоторые из собственных зависимостей Anvil несколько устарели — например, Bootstrap 3. Вы можете обойти это, создав собственную тему, что не является тривиальным объемом работы.

Шишка

Pynecone не включает инструменты проектирования, которые вы найдете в Anvil, но имеет ту же основную идею: вы используете код Python как для написания серверной части вашего веб-стека, так и для программного создания внешнего интерфейса без необходимости писать JavaScript.

Сам Pynecone использует как Python, так и, по крайней мере, версию среды выполнения Node.js с долгосрочной поддержкой, а также менеджер библиотек JavaScript Bun. Для этого вам необходимо иметь Node перед запуском pip install pynecone. Кроме того, стек Pynecone несколько склоняется в пользу Linux, а не Windows; он будет работать в Windows, но не так хорошо, если вы не используете подсистему Windows для Linux (WSL). Но как только вы все настроите, вы можете использовать предоставленный pc Команда, чтобы настроить новый шаблон проекта Pynecone в виртуальной среде и запустить его.

Веб-фреймворк Python Python. IDG

Пример компонентной модели для страницы Pynecone. Компоненты можно кэшировать для повторного использования для повышения производительности.

Внешний интерфейс приложения Pynecone компилируется в Next.js, где каждый из компонентов на веб-странице описывается с использованием объектов Python. Многие общие компоненты являются встроенными — не только стандартные вещи, такие как текстовые макеты или обработка форм, но и объекты отображения данных, такие как графики или диаграммы, элементы управления обратной связью, такие как оповещения и индикаторы выполнения, а также объекты наложения, такие как модальные окна и всплывающие подсказки. Вы также можете обернуть специально созданные компоненты React. Для подключения к источникам данных Pynecone включает слой данных, который является оболочкой для хорошо известного ORM SQLAlchemy.

Если вы хотите настроить компонент пользовательского интерфейса, наиболее распространенные настройки, такие как стили CSS, могут быть переданы в качестве аргументов конструктору объекта, а не создавать подкласс компонента и изменять его таким образом. Для всего остального есть пользовательский HTML, но для подавляющего большинства распространенных проектов должно хватить некоторой комбинации встроенных модулей и их параметров. Встроенный запоминающий декоратор позволяет избежать повторного рендеринга компонентов, но декоратор не позволяет контролировать размер или время жизни его кеша.

Наконец, если вы создаете в основном статические сайты, у Pynecone есть удобная возможность экспортировать весь сайт в статическую сборку. Это делает Pynecone полезным и в качестве программного инструмента для создания сайтов.

ПростоPy

Как и Pynecone, JustPy позволяет программно создавать элементы на веб-страницах, хотя и не имеет инструментов интерактивного дизайна. Что выделяет JustPy, так это его эффективная и разумная объектная модель.

Например, мы можем создать jp.Ul список объектов lзатем добавьте к нему элементы, определив новые объекты с родительским l указывается через аргумент. Это упрощает создание списков с помощью for циклы без необходимости добавления объектов в какой-либо контейнер, поэтому полученный код является чистым и легко анализируемым. Все объекты JustPy можно разделить на подклассы и изменить; в документации есть несколько примеров.

Регистрация обработчиков событий для элементов, таких как действия по щелчку, требует немногим больше, чем написание функции Python, которая принимает self в качестве первого аргумента (для рассматриваемого объекта). Обработчики событий также могут иметь события «до» или «после» для большей гибкости. Если вам нужны живые обновления внешнего интерфейса через WebSockets, JustPy предлагает это по умолчанию, но вы также можете использовать обновления Ajax.

JustPy использует Tailwind для CSS, который использует компонуемые служебные классы для стилизации, но при необходимости вы можете отключить Tailwind и переключиться на другую структуру CSS (без естественной интеграции JustPy). Вы также можете напрямую вставлять HTML несколькими способами — установив inner_html атрибут объекта, путем прямого внедрения HTML на уровне страницы или путем анализа необработанного HTML в потоке объектов. Целые страницы или отдельные объекты также можно кэшировать для повторного использования.

Веб-фреймворк JustPy Python. IDG

Объектная модель JustPy очень компактна и эффективна, поэтому легко делать такие вещи, как создание массивов элементов управления и назначение им поведения.

Еще одна выдающаяся функция — интеграция с множеством внешних платформ для презентаций: Matplotlib, Plotly, Altair, Bokeh, и это лишь некоторые из них. Это делает JustPy подходящим для обработки кода Python для обработки данных и представления его через веб-интерфейс. Каждый объект, как и график Matplotlib, поставляется как объект JustPy, который можно добавить в коллекцию объектов любой страницы.

Некоторые вещи не включены. JustPy не включает ORM или другой уровень данных как часть своего стека. Это не большое упущение, поскольку ORM и уровни данных достаточно легко добавить постфактум в любую современную веб-инфраструктуру. Но также нет прямого эквивалента простой системе шаблонов, такой как Jinja2, и нет включенной опции для полностью статического развертывания веб-сайта.

Заключение

Глядя на три фреймворка в целом, Anvil привлекает своими интерактивными инструментами для создания пользовательского интерфейса с низким уровнем кода и без кода, в то время как JustPy предлагает компактный способ выразить то, как объекты создаются и взаимодействуют между собой. Тем временем Pynecone обеспечивает удобство работы с компонентами React и Next.js и позволяет отображать сгенерированные сайты в статический HTML.

Related Posts

Оставить комментарий