Node.js для новичков: HTML шаблоны и URL

Создание HTML-шаблонов

Всю информацию ранее выводили строкой. Для исправления этого, создадим HTML-файл, который будет выводиться на главной странице. Создадим файл yandex.html в папке templates со следующим содержимым:

<!DOCTYPE html>
<html>
<head>
  <title>Главная страница</title>
</head>
<body>
  <h1>Главная страница</h1>
  <p>Lorem ipsum...</p>
</body>
</html>

Теперь вместо вывода строки будем выводить этот HTML-файл.

Работа с файлами и потоками данных

Для работы с файлами подключим модуль fs:

const fs = require('fs');

Внутри функции createServer, после отправки заголовков, создадим константу и запишем в нее результат чтения файла index.html с помощью метода fs.createReadStream:

const stream = fs.createReadStream('./templates/index.html');

fs.createReadStream считывает файл потоками, отправляя информацию на сервер по частям. Это ускоряет отображение сайта.

Метод pipe отправляет данные на сервер:

stream.pipe(response);

Улучшение отображения страницы

Добавим стили в HTML-файл, используя тег <style>:

<style>
body {
  background-color: #333;
  color: #eee;
  text-align: center;
  padding-top: 100px;
}
</style>

В дальнейшем, при изучении Express.js, рассмотрим более корректный подход к подключению стилей с помощью отдельных CSS-файлов.

Отслеживание URL-адресов и обработка ошибок

Для отслеживания URL-адресов добавим условия в функцию createServer:

if (request.url === '/') {
  // чтение index.html
} else if (request.url === '/about') {
  // чтение about.html
} else {
  // чтение error.html
}

Создадим файлы about.html и error.html:

<!DOCTYPE html>
<html>
<head>
  <title>О нас</title>
</head>
<body>
  <h1>Страница про нас</h1>
  <p>...</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
  <title>Ошибка</title>
</head>
<body>
  <h1>Ошибка</h1>
  <p>Такой страницы нет. Перейдите на главную.</p>
</body>
</html>

Теперь при переходе по /about отобразится about.html, а по несуществующему адресу — страница с ошибкой. Добавим ссылки между страницами для навигации.

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

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