Модуль
Модули (основные составляющие приложения) могут быть извлечены или добавлены в приложение без сбоев в системе.
Модули отвечают за обработку запросов на стороне клиента, поэтому прежде всего вы должны создать имена маршрутов, которые будут связывать пользователей с вашей бизнес-логикой.
Давайте создадим наш первый модуль
Первый модуль, который мы создадим, это «users». Для этого нам нужно пойти в "src/modules"
папку и создать там директорию "users".
Потом нам нужно создать необходимые для модуля файлы:index.js
и config.json
.
index.js
это системная оболочка модуля. Минимальный необходимый код внутри должен выглядеть так:
module.exports = ({ ACTIONS, ROUTER, utils }) => {};
Так мы пробросим ACTIONS, ROUTER и прочие компоненты системы внутрь нашего модуля.
Также в index файл мы можем импортировать наш файл конфига:
const { routes } = require('./config.json');
Как вы видите - мы импортировали ключ routes. Давайте наполним наш конфиг роутами:
{
"name": "users",
"version": "0.0.1",
"routes": {
"users_auth": { "path": "users/auth", "method": "get" }
}
}
Теперь нам нужно передать наши роуты из конфига в ROUTER и трансформировать имя роута в валидный ACTIONS ивент.
const { routes } = require('./config.json');
module.exports = ({ ACTIONS, ROUTER, utils }) => {
ROUTER.set('routes', routes); // add module routes to global routes store
const { users_auth } = utils.convertkeysToDots(routes); // get valid ACTIONS event name
};
Теперь мы готовы обработать запрос от клиента по заданному роуту.
const { routes } = require('./config.json');
module.exports = ({ ACTIONS, ROUTER, utils }) => {
ROUTER.set('routes', routes);
const { users_auth } = utils.convertkeysToDots(routes); // get valid ACTIONS event name
ACTIONS.on(users_auth, ({ headers, params, query, body }) => {
return (body.name) ?
Promise.resolve({ status: 'success' }) :
Promise.reject({ error: { message: 'user name not exist!' } });
});
};
Выглядит круто. Но наш модуль всё ещё отделён от всего приложения.
Мы можем присоединить его к ядру просто добавив массив в export в файл "src/modules/index.js"
const USERS = require('./users/index'); // require index file from our module
module.exports = () => [
USERS, // export our module for connect it to core
];
Last updated
Was this helpful?