У меня общий вопрос о разработке Nodejs приложения с собственными жизненными циклами и событиями для отслеживания нескольких видов деятельности во всем мире.
Что мне нужно?
Любой
- Ссылки
- Советы и рекомендации
- Чертежи
- Фреймворки
Фон
В разработали бэкэнд с базой данных, аутентификацией и загрузкой файлов. Я сделал это очень прагматично c, и он отлично работает. Но теперь я хочу разработать новую лучшую архитектуру, которая основана на событиях для отслеживания действий и перехватов жизненного цикла для модулей инициализации.
Я исследовал Libs, что, кажется, замечательно, но мне нужно знать, на правильном ли я пути.
Вот недавний бэкэнд, который я хочу обновить с core:
@ fractools / node
Цель
Узел должен быть более абстрактным и ориентированным на события, чтобы отслеживать действия более глобально для процесса отверстия ,
Я думал о модуле ядра, который определяет основу для событий и хуков, которые слушают процесс приложения дырки.
Таким образом, другие модули, такие как обработка базы данных или аутентификация и т. Д. c, могут быть обернуты в нее.
Мои вопросы
Как мне иметь помощника, такого как регистратор активности, который прослушивает сквозное приложение, так что мне не нужно импортировать регистратор в каждом действии? Является ли это возможным? Имеет ли это какой-то смысл?
Пример Case
Основной модуль отслеживает активность базы данных:
Система помещает данные в базу данных, ядро прослушивает их, отслеживает и помещает эту информацию в Logger, который использует базу данных.
Issue
Я застрял, например, в одной простой вещи архитектуры:
Если у меня есть класс базы данных, и я хочу Core, который является расширенным EventErmitter, слушайте Действия с базой данных, я не могу иметь регистратор внутри Core, который использует базу данных, потому что я не могу ссылаться на эти модули одновременно:
// Core Module
const EventErmitter = require('events');
const Database = require('./database)';
module.exports = class Core extends EventEmitter {
constructor() {
super();
this.logger = new Database('Logger');
this.on('mounted', () => {
this.logger.put('instance mounted')
});
this.on('putData', () => {
this.logger.put('dataPut')
});
this.emit('mounted');
}
}
// Database Module
const Core = require('./core');
const PouchDB = require('pouchdb'); // Which database lib to use is not important yet
let core = new Core();
module.exports = class Database {
constructor(name, options) {
this.id = generateID();
this.name = name;
this.created = JSON.stringify(new Date()); // TODO doubled Quotes
this.options = options || {};
this.db = new PouchDB(name);
core.emits('mounted')
}
put(data) {
this.db.put(data);
core.emits('dataPut')
}
}
Итак, я заметил, мне нужна любая отправная точка. : s
Я посмотрел на NodeJS EventErmitter
и обнаружил, что процесс NodeJS также лежит на EventErmitter.
Я также просмотрел несколько Tuts для NodeJS событий жизненного цикла, но это не помогло запустить архитектуру в любом случае.
Надеюсь, у некоторых из вас есть хорошие ссылки или «чертежи», которые помогают мне разработать хорошее ядро для моего узла. :)
Хорошего дня и будьте в безопасности!
Привет