Используем самописный фраемворк, который очень многие идеи, честно взяты из метархии.
При старте, приложение пробигает по файлам и формирует из них контекс и эндпоинты.
Контекст подмешивается в глобальную область видимости файлов.
в контексте есть lib
, domain
, db
, lib
.
Так же мы ограничиваем доступ к стандарнтым функциям ноды,
что бы разграничить слои, явно установив правила, где что можно делать.
Разберем каждую по отдельности:
Папка /api
в которой хранятся эндпоинты. Сами энедпоинты формируются по путям файла. Являются входной точкой в наш сервис.
Пример:
если у нас есть файл /api/patient/list.ts
,
то эндпоинт будет вызван по url
https://../../patient/list
(!пока выпилен)
или в ws
медотом { method: '/patient/list', data: ... }
Доступны глобальные переменные: domain
, db
, lib
.
Папка /domain
в которой хранятся объекты бизнес логики.
Доступ к бизнес логике идет в api
, через глобальную переменную domain
.
Доступны глобальные переменные: db
, lib
.
Папка /db
все что связанно со стораджами.
Доступ доступен в api
и domain
, через глобальную переменную db
.
Доступны глобальные переменные: lib
.
Папка /lib
библиотеки, которые нужны для работы приложения.
Доступ доступен в api
и domain
, db
, через глобальную переменную lib
.
Единственное место где доступно ключевое слово require
для загрузки сторонних модулей.