Недавним дополнением к Swell стал наш фреймворк Apps, который открывает множество новых возможностей для настройки платформы под уникальные сценарии использования. Среди функций, которые может предоставлять приложение, — размещаемые функции (hosted functions).
Как функции открывают новые возможности
Функции пишутся на JavaScript или TypeScript и развертываются в облачной среде Swell, работающей на базе Cloudflare Workers. Они могут запускаться событиями данных (по аналогии с вебхуками), по расписанию или вызываться напрямую через HTTP. При вызове функция оборачивается в контекст магазина Swell и его API, что обеспечивает удобство разработки без лишнего шаблонного кода.
Вот пример функции, которая отправляет подтверждение по SMS при отправке заказа.
В этом примере мы видим, как функция может использоваться асинхронно, но существует множество сценариев, требующих, чтобы функция перехватывала событие и влияла на результат синхронно.
Вот пример функции, которая вызывается в процессе выполнения запроса и изменяет данные заказа перед его отправкой.
Тестирование и развертывание
Разработка и развертывание упрощаются благодаря Swell CLI. Одна команда скомпилирует и запустит локальные версии ваших функций, используя Cloudflare Wrangler в фоновом режиме.
Команда swell app dev заставит Swell проксировать все события бэкенда на вашу локальную машину, чтобы вы могли протестировать и визуализировать поведение перед отправкой в облако. Вы также можете вызывать функции напрямую с помощью инструмента API, такого как Postman, с вызовом URL, указанного командой.
По мере внесения изменений функции автоматически перекомпилируются и перезагружаются «на лету», а также развертываются в Swell как часть вашей версии приложения для разработки.
Вы увидите вывод всех консольных логов при запуске swell app dev, а когда функции выполняются в облаке, вы можете просматривать их входные и выходные данные в панели управления Swell в разделе Developer -> Console -> Logs.
Контекст — это ключ
Функции изолированы платформой Cloudflare Worker, и их логика содержит только то, что необходимо для выполнения задачи. Чтобы максимально упростить и сократить шаблонный код, Swell компилирует и оборачивает код функции в контекст, который предоставляет легкий доступ к API магазина и настройкам приложения, а также подробную информацию о событии или триггере. Именно этот контекст делает процесс разработки по-настоящему магическим.
Углубляясь, объект контекста, передаваемый как req в вашу функцию, включает в себя все необходимое под рукой. Здесь есть swell — наш SDK для взаимодействия с API, например, для запроса товаров или обновления записей. Объект data содержит специфичную для события полезную нагрузку, такую как запись, которая создается или обновляется, а объект store дает доступ к деталям и настройкам всего магазина. Больше никакой борьбы с аутентификацией или настройкой — все подготовлено и готово, позволяя вам сосредоточиться на логике, которая создает ценность.
Логи функций
Триггеры событий, расписаний и запросов
Функции могут запускаться тремя основными типами действий.
Функции событий (Event Functions) реагируют на изменения платформы, такие как создание или обновление записей в моделях, например, товаров или заказов. События могут быть асинхронными, как вебхуки, или синхронными с использованием хуков before или after. Используйте условия для фильтрации вызовов и порядковые номера для приоритизации выполнения в цепочках, гарантируя, что ваша функция сработает именно тогда и там, где нужно.
Функции по расписанию (Scheduled Functions) автоматизируют задачи с течением времени. Привязывайте их к полю даты модели для динамического планирования, например, для списания платежей по заданному графику, или используйте cron-выражения для повторяющихся заданий, таких как ежедневная синхронизация инвентаря. Это открывает двери для проактивной автоматизации электронной коммерции без постоянного контроля.
Функции запросов (Request Functions) превращают ваше приложение в кастомный API-движок. Будучи представленными как HTTP-эндпоинты, они обрабатывают обычные HTTP-методы с опциями кэширования, публичного доступа или безопасной аутентификации на основе ключей. Идеально подходят для встраивания кастомной логики в headless-витрины или интеграции сторонних сервисов по требованию.
Каждый тип триггера использует одну и ту же среду выполнения на базе edge-технологий для отсутствия «холодных стартов» и оптимальной производительности, что делает Swell Apps масштабируемым расширением вашего магазина.
Начало работы
Начните с установки Swell CLI и выполнения команды swell create function, чтобы создать каркас вашей первой функции. Разрабатывайте локально с помощью swell app dev для тестирования в реальном времени через защищенный туннель. Развертывайте без усилий — изменения автоматически отправляются на наш edge-сервер, работающий на базе Cloudflare.
Несколько рекомендаций: пишите лаконичный код, используя модули ES и избегая неподдерживаемых API Node. Используйте условия для минимизации количества вызовов. Для функций запросов включайте кэширование GET-запросов для повышения производительности. Помните, что, несмотря на свою мощность, функции имеют ограничения по памяти и времени выполнения, поэтому проектируйте их с учетом эффективности.
Для получения полной информации ознакомьтесь с нашей документацией для разработчиков App Functions. Мы с нетерпением ждем того, что вы создадите — делитесь своими работами, оставляйте отзывы или сотрудничайте с нами, чтобы формировать будущее.










