@PHPjedi

Как удобно реализовать роутинг при большом списке роутов на Koa?

Доброе утро!

Я хочу настроить роутинг на Koa следующим образом...

-routes
--users.js
--clients.js
--cars.js


Подобную структуру Вы могли видеть, если когда либо создавали проект через WebStorm на Express.js.

На Koa для роутинга использую Koa-router.

Как реализовать удобную структуру для роутинга? Одну, которую я знаю, я описал выше. Если Вы знаете структуры получше, то пожалуйста, опишите её, буду благодарен).

1) Как грамотно реализовать удобную роутинг экосистему?
2) Как реализовать это грамотно в плане кода?
Буду рад увидеть примеры, если конечно они существуют.

Большое спасибо!
  • Вопрос задан
  • 152 просмотра
Решения вопроса 2
DexterHD
@DexterHD
Software Engineer, Teamlead, CTO
Я бы предложил вообще вынести список роутов в один файл. Ведь по сути роутинг это просто связывание хэндлеров с определенным URL (Иногда с привязкой middleware посередине).
Далее этот файл положить в одном каталоге с точкой входа в приложение и в него уже заимпортить реализации хэндлеров из тех модулей которые необходимы.

Это позволит полностью отделить реализацию от путей. А так же позволит не запутаться в огромном кол-ве путей и групп, т.к. они будут в одном месте.

// routes.js
import users from './users';
import posts from './posts';

router
  .get('/', app.homeHandler)
  .get('/posts', posts.listHandler)
  .post('/users', users.createHandler)
  .put('/users/:id',  users.changeHandler)
  .del('/users/:id', users.deleteHandler)
  .all('/users/:id', users.allHandler);
Ответ написан
Комментировать
@afanasiyz
Javascript-разработчик
Мы разносили роуты + модели для каждой абстракции (users, clients, cards) по отдельным папкам, и у вас соответственно в корне есть папки users, clients, cards, и внутри подпапки routes и models.
а в индексе просто делается несколько app.use для каждого набора роутов.

работать не больно, и можно достаточно хорошо расширять систему.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы