Лаб. работа “Создание веб-приложений с использованием фреймворка Express.js”
Цель работы
Научиться создавать веб-приложения с использованием фреймворка Express.js, а также освоить основные концепции и методы работы с этим инструментом.
Оборудование и программное обеспечение
- Компьютер с установленной операционной системой
- Установленный Node.js и npm (Node Package Manager)
- Установленный редактор кода (например, Visual Studio Code)
- Веб-браузер
Теоретическая часть
Express.js - это минималистичный и гибкий веб-фреймворк для Node.js, который обеспечивает мощный набор функций для создания одно- и многостраничных веб-приложений.
Основные компоненты Express.js:
- Маршрутизация: Определение конечных точек (маршрутов) для обработки запросов.
- Промежуточное ПО (Middleware): Функции, которые обрабатывают запросы на различных этапах их жизненного цикла.
- Шаблонизация: Поддержка различных шаблонизаторов для динамической генерации HTML.
Практическая часть
Шаг 1: Установка и настройка
- Создайте новую директорию для вашего проекта и перейдите в нее:
- Инициализируйте новый проект npm:
- Установите Express.js:
Шаг 2: Создание базового сервера
- Создайте файл
index.js
в корне проекта и добавьте следующий код:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
- Запустите сервер:
- Откройте веб-браузер и перейдите по адресу
http://localhost:3000
. Вы должны увидеть сообщение “Hello, Express!”.
Шаг 3: Добавление маршрутов и обработчиков
- Добавьте новый маршрут для страницы “About”:
- Перезапустите сервер и проверьте страницу
http://localhost:3000/about
.
Шаг 4: Использование промежуточного ПО
- Создайте простое промежуточное ПО для логирования запросов:
- Добавьте промежуточное ПО перед определением маршрутов.
Шаг 5: Работа с шаблонами
- Установите шаблонизатор EJS:
- Настройте Express для использования EJS:
- Создайте директорию
views
и добавьте файлindex.ejs
:
<!DOCTYPE html>
<html>
<head>
<title>My Express App</title>
</head>
<body>
<h1>Hello, <%= name %>!</h1>
</body>
</html>
- Измените маршрут для главной страницы для рендеринга шаблона:
- Перезапустите сервер и обновите главную страницу.
Шаг 6: Создание маршрута с параметрами
Создайте маршрут, который принимает параметр id и отображает его:
Перезапустите сервер и проверьте маршрут по адресу http://localhost:3000/user/123.
Шаг 7: Обработка POST-запросов
Установите и подключите промежуточное ПО для обработки POST-запросов:
Подключите body-parser в вашем приложении:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
Создайте маршрут для обработки POST-запросов на путь /submit:
app.post('/submit', (req, res) => {
const name = req.body.name;
res.send(`Received submission: ${name}`);
});
Проверьте маршрут с использованием инструмента Postman или curl:
Шаг 8: Создание маршрутов для статических файлов
Создайте директорию public и добавьте туда статические файлы, например изображения, css.
Подключите промежуточное ПО для обслуживания статических файлов:
Перезапустите сервер и проверьте доступность статического файла по адресу http://localhost:3000/example.jpg.
Шаг 9: Обработка ошибок
Создание страницы ошибки 404
- Добавьте обработчик для маршрутов, которые не были найдены (ошибка 404):
- Перезапустите сервер и проверьте, что страница ошибки 404 отображается при переходе по несуществующему маршруту, например,
http://localhost:3000/nonexistent
.
Создание страницы ошибки 500
- Добавьте обработчик ошибок для всех остальных ошибок (ошибка 500):
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
- Для проверки этого обработчика, создайте искусственную ошибку в одном из маршрутов:
- Перезапустите сервер и проверьте, что страница ошибки 500 отображается при переходе по маршруту
http://localhost:3000/error
.
Использование шаблонов для страниц ошибок
Создайте директорию
views
и добавьте шаблоны для ошибок404.ejs
и500.ejs
.Пример файла
views/404.ejs
:
<!DOCTYPE html>
<html>
<head>
<title>Page Not Found</title>
</head>
<body>
<h1>404 - Page Not Found</h1>
<p>Sorry, the page you are looking for does not exist.</p>
</body>
</html>
- Пример файла
views/500.ejs
:
<!DOCTYPE html>
<html>
<head>
<title>Server Error</title>
</head>
<body>
<h1>500 - Server Error</h1>
<p>Something went wrong on our end. Please try again later.</p>
</body>
</html>
- Обновите обработчики ошибок для использования шаблонов:
app.use((req, res, next) => {
res.status(404).render('404');
});
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).render('500');
});
- Перезапустите сервер и проверьте работу страниц ошибок 404 и 500.
Самостоятельные задания
Задание 1: Настройка проекта
Создайте новый проект, установите express.js, EJS.
Задание 2: Создание основного сервера
- Создание сервера: В корне вашего проекта создайте файл
index.js
и настройте сервер с использованием express. - Запуск сервера: Настройте сервер на прослушивание порта 3000 и добавьте обработку ошибок для случаев, когда сервер не удается запустить.
Задание 3: Маршрут для главной страницы
- Маршрут
/
: Создайте маршрут для главной страницы (/
), который будет возвращать простое приветственное сообщение, например “Добро пожаловать на мой сайт!”. - Статус-код: Убедитесь, что ваш маршрут возвращает статус-код 200.
Задание 4: Маршрут для страницы “Обо мне”
- Маршрут
/about
: Создайте маршрут для страницы “Обо мне” (/about
), который будет возвращать информацию о вас, такую как имя, возраст, интересы и краткую биографию. - Статус-код: Убедитесь, что ваш маршрут возвращает статус-код 200.
Задание 5: Маршрут для страницы “Контакты”
- Маршрут
/contact
: Создайте маршрут для страницы “Контакты” (/contact
), который будет возвращать информацию о способах связи с вами, например, ваш email и телефон. - Статус-код: Убедитесь, что ваш маршрут возвращает статус-код 200.
Задание 6: Обработка несуществующих маршрутов
- Обработка 404: Добавьте middleware, который будет обрабатывать запросы к несуществующим маршрутам и возвращать сообщение об ошибке с статус-кодом 404.
Задание 7: Статические файлы
- Папка для статических файлов: Создайте папку
public
в корне вашего проекта и разместите в ней несколько статических файлов (например, изображения, CSS). - Подключение статических файлов: Настройте express для раздачи статических файлов из папки
public
.
Задание 8: Middleware
- Логирование запросов: Добавьте middleware, который будет логировать все входящие запросы (метод, URL и время запроса).
Задание 9: Запуск и тестирование
- Запуск сервера: Запустите ваш сервер и протестируйте все созданные маршруты с помощью браузера или Postman.
- Тестирование ошибок: Проверьте, корректно ли обрабатываются запросы к несуществующим маршрутам.