koa-router, разработанный Alex Mingoia и поддерживаемый Zijian He, может быть самым популярным промежуточным программным обеспечением для маршрутизации в мире Koa.js. Только что закончил чтение исходного кода koa-router, я пишу этот блог и желаю, чтобы он был вам полезен.

Написанный в стиле ES5, Koa-router состоит из двух файлов: router.js и layer.js.layer.js — это объект, который используется для управления отдельным маршрутом, и это атом всей системы. Router.js используется для интеграции этих атомов.

Прежде всего, мы должны знать, как выглядит код в коде kao.js.

Ядром koa-router является приведенный ниже код в методе routes в router.js.

Он использует koa-compose для создания цепочки совпадающих промежуточных программ, в которой все промежуточные программы работают по порядку.

Хорошо, начнем с атома — Layer

В конструкторе Layer создается массив methods для сохранения HTTP-глагола запроса, а массив paramNames создается для сохранения параметров URL.stack создан для содержания промежуточного программного обеспечения. Свойства path и regexp используются для сохранения пути запроса и соответствующего ему регулярного выражения.

В объекте слоя определены следующие методы прототипа, и будут представлены важные из них.

совпадение()

Этот метод очень прост, и он возвращает, соответствует ли путь запроса маршруту, используя this.regexp.

параметры()

Этот метод возвращает карту параметров URL в виде объекта для заданных path и paraNames. Он перебирает массив захватов, получая ключ из paraNames и значение из захватов и, наконец, из карты параметров URL заданного пути.

захватывает ()

Этот метод возвращает массив захваченных URL-адресов regexp.

URL()

Этот метод генерирует URL для маршрута с использованием заданных параметров, и, поскольку я не думаю, что это важно здесь, я не буду его представлять.

параметр()

Этот метод используется для запуска проверок именованных параметров маршрута.

установитьпрефикс()

Этот метод используется для установки пути префикса маршрута.

Далее — Роутер

В router.js мы сначала вводим его конструктор, а затем его методы.

конструктор

Здесь methods создается для сохранения команды HTTP, params создается для сохранения промежуточного программного обеспечения, определенного методом param, а stack создается для сохранения объектов слоя. .

глагол()

Основным кодом здесь является метод this.register(), который используется для создания и регистрации объекта Layer. Router.prototype[method] — это очень гибкий способ создания методов настолько, насколько позволяют HTTP-глаголы.

регистр()

Эти методы берут на себя ответственность за создание экземпляра объекта Layer, настройку промежуточного программного обеспечения префикса и параметра и помещение объекта в стек.

использовать()

Промежуточное ПО запускается в том порядке, в котором оно определено этим методом. С помощью этого метода мы можем определить промежуточное ПО на уровне маршрутизатора.

совпадение()

маршруты()

Это основной метод, который помещен в метод .use() уровня Koa в качестве промежуточного слоя.

Это не все методы, которые есть у koa-router, и некоторые методы, такие как allowedMethods, не включены.

Тем не менее, этот блог, как правило, предлагает вам карту, с помощью которой вы можете легче читать исходный код, а Koa-router имеет чрезвычайно подробную систему комментариев, которая поможет вам.