NodeJS. Что такое Middleware и статические файлы.
Всем привет! В этой статье мы рассмотрим, что такое middleware и как работать со статическими файлами в NodeJS.
Итак, давайте для начала проведем простой эксперимент. В корне проекта создадим папку assets и туда закинем файл styles.css с нужными нам стилями. В файле шаблона index.ejs, естественно, подключим файл стилей, указав путь /assets/styles.css. Если вы теперь зайдете на наш сайт, то увидите, что стили не подключились. Открыв инструменты разработчика и перейдя в раздел "сеть", мы можем увидеть, что файл styles.css пришел с ответом 404 Not Found. Почему так происходит? Все дело в том, что браузер запрашивает файл стилей у нашего приложения. Главный файл нашего приложения, как вы помните, app.js. Туда и приходит запрос. Поскольку для приложения этот запрос такой же, как и запрос к какой-нибудь странице, он смотрит, есть ли обработчик для него. Поскольку мы никак не обрабатываем запрос на файл styles.css, в отличие от другие запросов(например, /contact или /index и т.д.), то сервер ничего не возвращает и, соответственно, файл не удается найти. Чтобы это дело исправить, мы можем делать кучу запросов на нужные картинки или файлы, но, как вы понимаете, это далеко не самый лучший путь. Нам нужно простое и удобное решение для данной задачи, и оно есть – это Middleware. Давайте разберемся, что такое middleware.
Middleware – это прослойка между нашим запросом и ответом. Например, мы обращаемся к странице /contact – это запрос, затем мы отрисовываем ее – это ответ, а вот функция, в которой мы можем написать какой угодно код и в которой мы как раз и отрисовываем нашу страницу – это middleware.
Для решения нашей задачи мы будем использовать возможности Express:
// файл app.js, код поместить после app.set('view engine', 'ejs');
app.use('/assets', express.static('assets'));
Здесь мы используем метод use(), в который первым параметром передаем запрос, получив который будет запускаться второй параметр, где мы используем метод static() для получения пути до статических файлов, таких, как файл стилей. Т.е. как только в адресной строке появится /assets или этот путь будет где-нибудь указан, например, в файле шаблона, как у нас, то эти файлы будут искаться в нашей папке /assets.
А на сегодня это все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.