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 имеет чрезвычайно подробную систему комментариев, которая поможет вам.