Node.js: Статические файлы и Middleware (шаблоны EJS)

Включение файлов в другие файлы

Для удобства работы с многочисленными шаблонами (например, news.ejs), содержащими повторяющиеся блоки (шапка, футер), целесообразно вынести эти блоки в отдельные файлы и подключать их к основным шаблонам. Это упрощает изменения, например, ссылок в шапке — достаточно внести изменения в одном файле, и они автоматически отразятся во всех шаблонах.

Создадим папку blogs и в ней файл header.ejs:

<ul>
  <li><a href="/">Главная</a></li>
  <li><a href="/about">О нас</a></li>
  <li><a href="/news">Новости</a></li>
</ul>

Подключим этот файл к шаблону news.ejs после тега <body>:

<% include ./blogs/header.ejs %>

После сохранения изменений и запуска сервера, меню появится в news.ejs. Для добавления меню на другие страницы (например, about.ejs или index.ejs), достаточно скопировать строку <% include ./blogs/header.ejs %> в соответствующие файлы. Изменения в header.ejs автоматически обновят меню на всех страницах.

Статические файлы и промежуточное ПО

Создадим папку public для хранения статических файлов (CSS, изображения и т.д.). Внутри public создадим папку css и файл style.css. Переместим стили из index.ejs в style.css.

Для подключения style.css используем путь:

<link rel="stylesheet" href="/public/css/style.css">

Без использования промежуточного ПО стили не применятся, так как style.css — статический файл.

Добавим промежуточное ПО:

app.use('/public', express.static('public'));

Теперь Express.js будет обслуживать статические файлы из папки public. После перезапуска сервера стили будут применены. Добавление новых ссылок в style.css мгновенно отразится на всех страницах. Это промежуточное ПО обрабатывает запросы до маршрутов приложения. Например, console.log внутри него выполнится перед обработкой запроса на странице.

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

Что будем искать? Например,программа