Введение

JSBerry — это архитектура для создания масштабируемых node.js приложений.

В отличие от фреймворков, JSBerry создана как средство для использования и простого внедрения сторонних библиотек (плагинов) и бизнес логики (модулей) под единым интерфейсом. Данная архитектура не навязывает использование конкретного фреймворка или библиотек "под капотом", предоставляя возможность гибко подключать любой удобный инструмент для разработки на любом этапе - не "ломая" при этом остальной функционал.

Вы можете использовать JSBerry как boilerplate для ваших новых проектов прямо сейчас, однако текущая версия @alpha 0.0.5 является нестабильной.

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

Философия

За основу JSBerry мы взяли хорошо известную, простую связку трех паттернов проектирования, предназначеную для масштабируемых приложений: https://addyosmani.com/largescalejavascript.

Мы построили общение между модулями на событиях и назвали их ACTIONS. По своей сути ACTIONS это медиатор (обработчик событий) построеный по принципу "pub/sub" и использующий "promises" для поддержки асинхронного кода.

Также мы добавили стандартный ROUTER который умеет “с коробки” принимать данные с REST, GraphQL или Web Sockets и имеет поддержку middleware. Задача роутера - собрать, при запуске приложения, с конфигов модулей информацию о подключаемых роутах и непосредственно при самом запросе на сервер найти нужный роут и отправить событие в нужный модуль.

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

На момент публикации этой страницы (@alpha 0.0.5) в разработке находится также внутренний обработчик ошибок ERROR.

Архитектура постоянно развивается, не без помощи заинтересованных в ней лиц, поэтому внедрение новых способностей зависит так же от тех кто готов помочь в её развитии. Добро пожаловать в contributors team :)

Last updated