Фреймворк Angel для программирования на стороне сервера Dart официально появился в версии 1.0 с начала этого года. Ангел все еще жив и здоров, и в течение июня он претерпел несколько обновлений. Теперь доступны дополнительные функции, которые помогут вам выполнять проекты с минимальной головной болью и коротким сроком выполнения, в том числе:

  • Горячая перезагрузка
  • Автоматическая (де) сериализация
  • Декларативная ORM для PostgreSQL, сгенерированная исходным кодом
  • shelf интеграция
  • И многое другое…

Горячая перезагрузка

В этом месяце я опубликовал package:angel_hot, который добавляет возможности горячей перезагрузки любому серверу Angel. Теперь вы можете редактировать логику приложения во время разработки, не перезагружая сервер вручную после каждого изменения файла.

Предыдущий подход заключался в монтировании наблюдателей за каталогами в системе и запуске / остановке всего процесса при каждом изменении. Хотя этот метод работал, новый API обеспечивает гораздо более быстрое время запуска и гарантирует, что текущая версия вашего сервера всегда является актуальным экземпляром.

Проекты, созданные с помощью angel init, включают заранее написанную конфигурацию горячей перезагрузки. Посмотрите репозиторий angel-dart/hot: https://github.com/angel-dart/hot

Две котельные плиты

Раньше проекты, созданные с помощью angel init, содержали огромное количество шаблонной логики, которая в основном не комментировалась, и ее было трудно понять без предварительного опыта Angel. В июне я просмотрел и добавил комментарии ко всему проекту.

Кроме того, я создал второй стартовый проект boilerplate_light, который является минимальным и содержит только наиболее часто используемые пакеты Angel. При создании проекта с angel init у вас теперь есть возможность выбирать между этим и исходным шаблоном.

См. Новый шаблон: https://github.com/angel-dart/boilerplate_light

Статический сервер, динамические активы и диапазоны

У Angel есть полный плагин статического сервера, который поддерживает кеширование; теперь он поддерживает обслуживание виртуальных активов. Версия 1.2.0 представляет упрощенный FileTransformer API, чем-то напоминающий gulp и package:build. . Также доступны функции для создания ресурсов на диске. Это не предназначено для замены чего-то вроде pub serve, но может быть полезно для таких ресурсов, как таблицы стилей Stylus, которые необходимо компилировать по запросу.

Проверьте это: https://github.com/angel-dart/static

Я также смог написать, протестировать и опубликовать package:angel_range, который предоставляет обработчик ответа (в идеале используемый как финализатор ответа), который обрабатывает Range заголовки и выдает соответствующие ответы.

Попробуйте: https://pub.dartlang.org/packages/angel_range

Angel CLI

Интерфейс командной строки Angel больше не проверяет наличие обновлений при каждом запуске. Вместо этого запустите angel update, чтобы проверить наличие обновлений, и при необходимости загрузите новую версию.

Смотрите его репо: https://github.com/angel-dart/cli

Обновления механизма задач

В июле движок задач Ангела был усилен, и теперь он может не только планировать повторяющиеся и разовые задачи, но и обмениваться данными между изоляторами. Вы можете использовать AngelTaskClient для запуска задач в удаленных изоляторах, а в сочетании с внедрением зависимостей Angel вы даже можете запускать задачи (и читать их результаты) в обработчиках маршрутов и перехватчиках. AngelTaskScheduler также продолжит работать с системой внедрения зависимостей Angel.

Дополнительную документацию можно найти в его репозитории: https://github.com/angel-dart/task

Полная интеграция с полками

Angel уже мог запускать shelf обработчики (с помощью dart:io), но теперь package:angel_shelf является полноценным shelf адаптером. embedShelf по-прежнему можно использовать для включения обработчика в обработчик запросов Angel, и теперь он будет работать быстрее. supportShelf - это подключаемый модуль, который исправляет экземпляр Angel для внедрения shelf.Request в обработчики и позволяет вам возвращать shelf.Response из любого обработчика, независимо от того, является ли он shelf обработчиком или нет.

Проверьте это: https://github.com/angel-dart/shelf

Теперь есть пример использования shelf интеграции для создания частного pub сервера: https://github.com/thosakwe/angel_pub_server

Переключение служб

package:angel_toggle - это новый пакет, который позволяет вам выбирать между двумя сервисами в зависимости от того, работает ли ваше приложение в «тестовом режиме». Короче говоря, он позволяет легко работать с базой данных в производстве и разработке, но со службой в памяти во время тестирования.

Проверьте это: https://pub.dartlang.org/packages/angel_toggle

Постоянные файловые службы

package:angel_file_service предоставляет единственный JsonFileService класс, который сохраняет изменения в файле JSON на диске. Это удобно для публикации руководств, потому что вам больше не нужно ожидать, что конечные пользователи установят определенную базу данных в их системе. Это также может быть полезно для разработчиков, впервые пробующих Angel.

Проверьте это: https://pub.dartlang.org/packages/angel_file_service

Потрясающий ангел

В июле также был создан «потрясающий список» для фреймворка Angel! Не стесняйтесь присылать пул-реквест, особенно если у вас есть крутой проект, использующий фреймворк!

Проверьте это: https://github.com/angel-dart/awesome-angel

Codelab

Началась работа над лабораторией кода, в которой пользователи создают SaaS для покрытия кода с помощью Angel в качестве бэкэнда. В идеале он будет опубликован до конца июля.

Вы можете отслеживать его прогресс здесь: https://github.com/angel-example/coverage_codelab

Значительно улучшенная сериализация

Angel теперь поставляется с библиотекой сериализации на основе package:source_gen. package:angel_serialize работает с Model классами Angel и может заменить TypedService для обеспечения кроссплатформенной (де) сериализации. Он также поддерживает вложенные классы моделей, списки и карты и генерирует несколько конструкторов для вашего удобства.

Взгляните сюда: https://github.com/angel-dart/serialize

PostgreSQL ORM

Также в стадии интенсивной разработки находится package:angel_orm. Он также поддерживается source_gen и генерирует следующее:

  • Построение строго типизированных запросов (выбор, вставка и т. Д.)
  • Скрипты миграции SQL
  • Ангельские услуги (скоро)

Следите за его продвижением здесь: https://github.com/angel-dart/orm

Скоро: кэширование в памяти

На июль-август запланирован cherubim, кэш в памяти (а-ля Memcached), который разработчики в конечном итоге смогут использовать для синхронизации данных, событий и сервисов в нескольких экземплярах. cherubim будет поддерживать изоляцию, сокеты TCP, веб-сокеты и REST API.

Если хватит смелости, загляните сюда: https://github.com/angel-dart/cherubim

Как всегда, спасибо за чтение! Дополнительную документацию можно найти на веб-сайте проекта и вики.

Присоединяйтесь к нам на Gitter.