Node.js: Подключение CSS файлов в Express.js

Добавление стилей

Ранее стили добавлялись непосредственно в тег <style>. Для больших проектов это неэффективно. Создадим отдельный CSS-файл и подключим его.

Создадим файл main.css в папке public/css. Добавим в него стили, например, для изменения цвета фона на черный:

body {
  background-color: black;
}

Прямое подключение public/css/main.css не сработает, поскольку Express.js не обрабатывает статические файлы без дополнительной настройки.

Статические файлы и Express.js

CSS-файлы, JavaScript-файлы, изображения и другие подобные файлы — статические. Для их обработки в Express.js используется промежуточное ПО (middleware).

В index.js добавим app.use с методом static:

const express = require('express');
const app = express();
// ... другой код ...
app.use(express.static('public'));
// ... другой код ...

Это указывает Express.js на папку public как источник статических файлов. Теперь для подключения main.css достаточно указать путь относительно public: css/main.css.

После перезапуска сервера стили применятся. Текст на странице станет невидимым из-за черного фона.

Организация проекта: Шаблоны и блоки

Для удобства работы с повторяющимися элементами, например, шапкой сайта, вынесем их в отдельные файлы. Создадим папку views/blocks и в ней файл header.ejs. Перенесем код шапки из about.ejs в header.ejs.

Подключение header.ejs осуществляется с помощью директивы <%- include %>:

<%- include('./blocks/header') %>

Обратите внимание на синтаксис: <%- include(‘./blocks/header’) %>, где . указывает на текущую папку, а расширение .ejs опускается. Для корректной работы можно использовать:

<%- include('./blocks/header') -%>

После изменений шапка будет корректно подключаться во всех файлах.

В этом уроке мы научились подключать статические файлы в Node.js с помощью Express.js и организовывать проект для удобства работы с повторяющимися блоками кода, используя возможности шаблонизатора. Это улучшает структуру проекта и упрощает его дальнейшее развитие.

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