> Github проекта
> Готовый пример с базовой архитектурой приложения
> NPM
Особенности:
- Полный контроль над происходящим
- Роутинг к которому вы скорее всего не привыкли разрабатывая на ноде
- Async/await friendly
- 0 зависимостей
- Быстрый
- Гибкий
- Легковесный
Особого смысла расписывать что и как я не вижу, т.к документация с примерами кода, плюс есть простой пример приложения.
Пролистав документацию и запустив у себя пример, а так же посмотрев кода примера, вы быстро все поймете. Подойдет оно вам или нет.
Комментарии (3)
movl
22.11.2017 22:40Код библиотеки мог бы быть значительно лучше, особенно если вы предлагаете другим людям им воспользоваться. На что обратил внимание беглым взглядом:
ES6
Методы объявляются в объекте, а не в прототипе, и при этом не использует никаких данных из замыкающей области видимости. Для этого в ES6 появились классы.
function EscobarServer() { this.host = '0.0.0.0'; // ... this.loadRoutes = (pathToFolder) => { /* ... */ } // ... }
Async/await/promises
В особенностях библиотеки заявлен "async/await friendly" интерфейс, хотя сама библиотека не использует возможности этих конструкций там где это более чем оправданно, из-за чего код превращается в рекурсивную лапшу из обратных вызовов:
files.forEach((name) => { let filePath = path.join(currentDirPath, name); iterations++; fs.stat(filePath, (err, stat) => { iterations--; // ... } // ... }
Парсер тела запроса какой-то очень странный, особо не стал разбираться в его логике работы, но сразу увидел что функция выполняется синхронно, но при этом объявлена как асинхронная, не совсем понимаю смысл этого.
this.parse = async function () { /* sync code */ }
Интерфейс
Логичнее было бы добавить возможность подписаться на события, которые не влияют на поток выполнения и также добавить интерфейс для подключения функций промежуточной обработки, вместо всех этих колбеков.
// Callbacks this.onBeforeEndpoint = null; this.onBeforeSendResponse = null; // ...
Видимо, вся эта библиотека, это попытка создать роутинг на основе структуры директорий. Наверное нужно было больше уделить внимания существующим проектам со схожей концепцией. Да даже те же самые рельсы хорошо ложатся в REST архитектуру и там тоже все по умолчанию завязано на структуре директорий, можно было позаимствовать идей от туда, да и не мало, скорей всего, существует примеров более-менее успешно реализующий данный принцип.
В целом код и интерфейс библиотеки далек от приемлемого, по моему мнению, и стоило дважды подумать, прежде чем пытаться его толкнуть кому-то на хабре.
sentyaev
23.11.2017 01:15Особого смысла расписывать что и как я не вижу, т.к документация с примерами кода, плюс есть простой пример приложения.
Если даже вы не видите смысла рассказывать про это, то как у потенциального пользователя, типа меня, появится мотивация «совершить переход» на github и разбираться что же вы такое сделали?
Вы бы хоть рассказали что это и зачем, какие проблемы решает, сравнение с конкурентами ну и т.д.
x07
жесть