Koa-send - полезный инструмент для обслуживания статических файлов для Koa.js. В отличие от Nginx или Apache, Node.js Server не предоставляет нам встроенный веб-контейнер, с помощью которого мы можем обслуживать статические файлы, поэтому мы должны сделать так, чтобы он обслуживал такие файлы, как css, js и изображения. Вот где работает koa-send.

Прежде чем читать его исходный код, мы сначала должны знать, как его использовать.

Это промежуточное ПО имеет только один файл - index.js. Давай посмотрим.

Его основной код находится под кодом, который создает поток потока чтения для клиента на основе его аргумента пути, который является файлом, который вы хотите вернуть.

Другие коды будут использоваться для настройки и расширения возможностей этого промежуточного программного обеспечения.

Он включает в себя три функции:

расшифровать

decode используется для декодирования закодированного пути, и если что-то пойдет не так, он вернет -1.

тип

type используется для получения типа файла в соответствии с extname этого файла, аргумент ext важен, потому что функция будет использовать его для получения истинного extname, которое может быть используется для определения типа файла, когда встречается .br или .gz.

скрыта

isHidden используется для определения того, является ли файл скрытым. Он удалит корневой путь специализированного пути, а затем разделит его на массив с помощью разделителя sep. Затем пройдемся по этому массиву, и если первый символ соответствующего элемента - «.», Мы знаем, что это скрытый файл. В Javascript вы можете взять строку как массив, поэтому path [i] [0] является допустимым. Здесь вы должны знать, что этот механизм работает только в операционной системе Linux, поскольку Windows не считает «.filename» скрытым файлом.

В функции send сначала будет сформирован объект параметров.

а затем нормализовать путь

Если пользователь передаст параметр индекса, будет установлен файл настраиваемого индекса.

Путь Абсульта находится здесь.

Если это скрытый файл и для параметра hidden установлено значение false, функция вернет

Следующий код используется для правильной настройки, если выполняется сжатие файлов, включающих .br и .gz.

Вы можете игнорировать extname в своем URL-адресе, и следующий код попытается вам помочь. Он попытается сопоставить расширения из переданного массива для поиска файла. Однако я не думаю, что это хорошая идея.

Следующий код сначала получает очень полезный объект stats. Затем отформатируйте путь и обновите объект stats в соответствии с новым путем.

Если передается setHeaders, запустите его, чтобы установить собственный заголовок.

Наконец, установите Conten-Length, Last-Modified, Cache-Control и отправьте ответ клиенту.

Koa.js в какой-то степени очень похож на Lego. Соберите эти крошечные промежуточные программы и сделайте значимый продукт.