Фреймворк 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.