Begin уже предоставляет вам самый продвинутый набор бессерверных инструментов и примитивов приложений в своем классе:

  • Статические ресурсы для публикации любого веб-ресурса или страницы.
  • HTTP-функции (@http), обеспечивающие полный рендеринг на стороне сервера
  • Begin Data - сверхбыстрый и простой способ сохранить данные приложения и получить к ним доступ.

Сегодня мы представляем совершенно новый примитив для Begin apps: функции событий (@events)!

Попробуйте функции "Начать события" прямо сейчас

Нажмите эту кнопку, чтобы развернуть пример приложения функций событий для запуска через 30 секунд:

Функции событий: что это такое и как они работают?

Асинхронные задачи - очень распространенное требование в большинстве современных приложений. Например: скажем, кто-то подписался на вашу рассылку новостей.

Вы же не хотите, чтобы ваш пользователь ждал ответа от вашего приложения, пока оно выполняет вызовы API к вашей службе списка рассылки.

Вместо этого вы, вероятно, захотите опубликовать полезную нагрузку JSON в выделенном асинхронном приемнике событий подписки - это обычно известно как pub / sub (или публикация / подписка). модель.

И теперь вы можете мгновенно создавать эти новые события приложения с Begin!

Поместите на это событие

Добавление всей шины сообщений pub / sub в ваше приложение может показаться сложным, но в Begin это очень просто:

1. Добавьте событие в свой .arc файл

Добавьте следующие (примерные) строки в файл .arc в корне вашего проекта:

@events
newsletter-add

2. Создайте обработчик событий, чтобы подписаться на newsletter-add

Чтобы привести в порядок полезную нагрузку входящего события, мы предлагаем запускать ваши функции событий с помощью нашего помощника во время выполнения Функции архитектора: cd src/events/newsletter-add && echo {} > package.json && npm i @architect/functions

Затем создайте свой обработчик событий:

// src/events/newsletter-add/index.js
let arc = require('@architect/functions')
async function newsletterAdd (event) {
  // Do some asynchronous stuff with your event payload here
  // ... such as calling to a newsletter API
  return
}
exports.handler = arc.events.subscribe(newsletterAdd)

3. Опубликуйте новое мероприятие в newsletter-add:

// src/http/post-newsletter/index.js
let arc = require('@architect/functions')
exports.handler = async function handler (req) {
  let { email } = req.body
  // Quickly fire off an event to be completed asynchronously
  await arc.events.publish({
    name: 'newsletter-add',
    payload: { email }
  })
  // Then respond to your user immediately
  return {
    statusCode: 200
  }
}

Готово! Теперь в вашем распоряжении бесконечно масштабируемая шина сообщений pub / sub, что означает, что ваше приложение может быстро реагировать на запросы пользователей и асинхронно обрабатывать сложные фоновые задачи.

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

Следующие шаги

  • Разверните пример приложения с событиями Begin за 15 секунд (кредитная карта не требуется):