Как начать работу с Node.js и Express
Введение
Express — это инфраструктура веб-приложений для Node.js, которая позволяет создавать надежные API и веб-серверы гораздо проще и чище. Это легкий пакет, который не закрывает основные функции Node.js.
В этой статье вы установите и используете Express для создания веб-сервера.
Предпосылки
Если вы хотите следовать этой статье, вам понадобятся:
- Локальная среда разработки для Node.js. Следуйте инструкциям по установке Node.js и созданию локальной среды разработки.
Это руководство было проверено с помощью Node v15.14.0, npm
v7.10.0, express
v4.17.1 и serve-index
v1.9.1.
Шаг 1 — Настройка проекта
Сначала откройте окно терминала и создайте новый каталог проекта:
- mkdir express-example
Затем перейдите во вновь созданный каталог:
- cd express-example
На этом этапе вы можете инициализировать новый проект npm:
- npm init -y
Далее вам нужно будет установить пакет express
:
- npm install express@4.17.1
На данный момент у вас есть новый проект, готовый к использованию Express.
Шаг 2 — Создание экспресс-сервера
Теперь, когда Express установлен, создайте новый файл server.js
и откройте его в редакторе кода. Затем добавьте следующие строки кода:
const express = require('express');
const app = express();
Первая строка здесь — получение основного модуля Express из установленного вами пакета. Этот модуль представляет собой функцию, которую мы затем запускаем во второй строке, чтобы создать нашу переменную app
. Таким образом вы можете создать несколько приложений, каждое со своими запросами и ответами.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Successful response.');
});
В этих строках кода мы сообщаем нашему серверу Express, как обрабатывать запрос GET
на наш сервер. Express включает аналогичные функции для POST
, PUT
и т. д. с использованием app.post(...)
, app.put(. ..)
и т. д.
Эти функции принимают два основных параметра. Первый — это URL-адрес, по которому эта функция будет действовать. В данном случае мы нацеливаемся на /
, который является корнем нашего веб-сайта: в данном случае localhost:3000
.
Второй параметр — это функция с двумя аргументами: req
и res
. req
представляет запрос, отправленный на сервер; Мы можем использовать этот объект для чтения данных о том, что запрашивает клиент. res
представляет собой ответ, который мы отправим обратно клиенту.
Здесь мы вызываем функцию res для отправки ответа: Successful response.
.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Successful response.');
});
app.listen(3000, () => console.log('Example app is listening on port 3000.'));
Наконец, после того, как мы настроили наши запросы, мы должны запустить наш сервер! Мы передаем 3000
в функцию listen
, которая сообщает приложению, какой порт прослушивать. Функция, передаваемая в качестве второго параметра, является необязательной и запускается при запуске сервера. Это дает нам некоторую обратную связь в консоли, чтобы знать, что наше приложение работает.
Вернитесь в окно терминала и запустите приложение:
- node server.js
Затем откройте localhost:3000
в веб-браузере. В окне браузера отобразится: Успешный ответ
. В окне терминала появится: Пример приложения прослушивает порт 3000
.
И вот он у нас есть, веб-сервер! Однако мы определенно хотим отправить клиенту больше, чем одну строку текста. Давайте кратко рассмотрим, что такое промежуточное ПО и как настроить этот сервер как статический файловый сервер!
Шаг 3 — Использование промежуточного программного обеспечения
С помощью Express мы можем писать и использовать функции промежуточного программного обеспечения, которые имеют доступ ко всем HTTP-запросам, поступающим на сервер. Эти функции могут:
- Выполнить любой код.
- Внесите изменения в объекты запроса и ответа.
- Завершить цикл запрос-ответ.
- Вызовите следующую функцию промежуточного слоя в стеке.
Мы можем написать свои собственные функции промежуточного программного обеспечения или использовать стороннее промежуточное программное обеспечение, импортируя их так же, как и любой другой пакет.
Давайте начнем с написания собственного промежуточного ПО, а затем попробуем использовать какое-нибудь существующее промежуточное ПО для обслуживания статических файлов.
Чтобы определить промежуточную функцию, мы вызываем app.use()
и передаем ей функцию. Вот базовая промежуточная функция для вывода текущего времени в консоль при каждом запросе:
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('Time: ', Date.now());
next();
});
app.get('/', (req, res) => {
res.send('Successful response.');
});
app.listen(3000, () => console.log('Example app is listening on port 3000.'));
Вызов next()
указывает промежуточному ПО перейти к следующей функции промежуточного ПО, если она есть. Это важно включить в конец нашей функции, иначе запрос застрянет на этом мидлваре.
При желании мы можем передать путь промежуточному программному обеспечению, которое будет обрабатывать запросы только к этому маршруту. Например:
const express = require('express');
const app = express();
app.use((req, res, next) => {
console.log('Time: ', Date.now());
next();
});
app.use('/request-type', (req, res, next) => {
console.log('Request type: ', req.method);
next();
});
app.get('/', (req, res) => {
res.send('Successful response.');
});
app.listen(3000, () => console.log('Example app is listening on port 3000.'));
При передаче /request-type
в качестве первого аргумента в app.use()
эта функция будет выполняться только для запросов, отправленных на localhost:3000/request-type.
.
Вернитесь в окно терминала и запустите приложение:
- node server.js
Затем откройте localhost:3000/request-type
в своем веб-браузере. В окне терминала отобразится временная метка запроса и Тип запроса: GET
.
Теперь давайте попробуем использовать существующее промежуточное ПО для обслуживания статических файлов. Express поставляется со встроенной промежуточной функцией: serve-index
, для отображения индексного списка наших файлов.
Во-первых, в той же папке, где находится экспресс-сервер, создайте каталог с именем public
и поместите туда несколько файлов.
Затем установите пакет serve-index
:
- npm install serve-index@1.9.1
Сначала импортируйте пакет serve-index
в начало файла сервера.
Затем включите промежуточное ПО express.static
и serveIndex
и сообщите им путь доступа и имя каталога:
const express = require('express');
const serveIndex = require('serve-index');
const app = express();
app.use((req, res, next) => {
console.log('Time: ', Date.now());
next();
});
app.use('/request-type', (req, res, next) => {
console.log('Request type: ', req.method);
next();
});
app.use('/public', express.static('public'));
app.use('/public', serveIndex('public'));
app.get('/', (req, res) => {
res.send('Successful response.');
});
app.listen(3000, () => console.log('Example app is listening on port 3000.'));
Теперь перезапустите сервер и перейдите к localhost:3000/public
. Вам будет представлен список всех ваших файлов!
Заключение
В этой статье вы установили и использовали Express для создания веб-сервера. Вы также использовали встроенные и сторонние функции промежуточного программного обеспечения.
Продолжите свое обучение с Как определить маршруты и методы HTTP-запросов в Express.