Роутер

Как установить?

npm i --save vqua-router

Пример

const { route, matchRoutes, initRoutes } = require('vqua-router') class PostsController { index() {} show() {} create() {} } const routes = [ route('/', 'Posts#index', {}, [ route('/posts/:id', 'Posts#show'), route('/posts/create', 'Posts#create'), ]), ] const controllers = { PostsController: new PostsController } const initedRoutes = initRoutes({ routes, controllers }) // console.log(initedRoutes) // // [ { path: '/', // action: [Function: index], // segments: [ '' ], // props: {}, // index: 0, // controller: PostsController {} }, // { path: '/posts/:id', // action: [Function: show], // segments: [ 'posts', ':id' ], // props: {}, // index: 1, // controller: PostsController {} }, // { path: '/posts/create', // action: [Function: create], // segments: [ 'posts', 'create' ], // props: {}, // index: 2, // controller: PostsController {} } ] const matchedRoute = matchRoutes(initedRoutes, '/posts/2') // console.log(matchedRoute) // // { path: '/posts/:id', // action: [Function: show], // segments: [ 'posts', ':id' ], // props: {}, // index: 1, // controller: PostsController {}, // request: // { path: '/posts/2', // segments: [ 'posts', '2' ], // params: { id: '2' } } }

Описание

Набор утилит для организации маршрутиризации.


route [Function]

Создает объект роута.


Аргументы:

matcher|matchers matcher [Object] | [Array]: matcher [Object] - объект(ы) совпадения
action [Function] - функция обработчик или строка в формате 'Контроллер#действие'
Например для контроллера PostsController и метода show, строка пути будет 'Posts#show'
props [Object] - объект параметров
childs [Array] - массив вложенных маршрутов


Возвращает:


route [Object]


scope [Function]

Назначает всем детям первого уровня свои сегменты.


Аргументы:

matcher|matchers matcher [Object] | [Array]: matcher [Object] - объект(ы) совпадения
childs [Array] - массив вложенных маршрутов


Возвращает:

[Array]: route [Object]


initRoutes [Function]


Аргументы:


routes [Array] - массив маршрутов
controller [Object] - объект контроллеров. Где ключи это название контроллеров.
matchers [Object] - объект совпадений. Где ключи это название объектов совпадения.


Возвращает:


[Array]: route[Object]


matchRoutes [Function]

Находит первый попавшийся маршрут на основе заданного пути и добавляет к нему объект request.


Аргументы:


routes [Array] - массив маршрутов
path [String] - строка пути


Возвращает:


[Object]: route[Object] & request[Object]




route [Object]

Объект роута.


Ключи:

segments [Array] - массив сегментов строки пути
path [String] - строка пути
action [Function] - функция обработки запроса
props [Object] - объект параметров запроса
childs [Array] - массив вложенных маршрутов


request [Object]

Объект запроса.


Ключи:


path [String] - строка пути
segments [Array] - массив элементов пути
params [Object] - объект параметров маршрута


matcher [Object]

Объект совпадения.


Ключи:

key [String] - название сегмента совпадения
match [Function] - функция обратного вызова


Пример:

{ key: 'id', matcher: id => id == '5' }


matcher.match [Function]

Определяет является ли значение сегмента url валидным.


Аргументы:

value [String] - значение сегмента url


Возвращает:


[Boolean]


matcher [String]

Строка совпадения


Примеры: