Как начать работу с Node.js и Express

Введение

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

В этой статье вы установите и используете Express для создания веб-сервера.

Предварительные требования

Если вы хотите следовать этой статье, вам понадобятся:

Этот учебник был проверен с использованием Node v15.14.0, npm v7.10.0, express v4.17.1 и serve-index v1.9.1.

Шаг 1 — Настройка проекта

Сначала откройте окно терминала и создайте новый каталог проекта:

  1. mkdir express-example

Затем перейдите в только что созданный каталог:

  1. cd express-example

На этом этапе вы можете инициализировать новый проект npm:

  1. npm init -y

Затем вам нужно установить пакет express:

  1. npm install express@4.17.1

На этом этапе у вас есть новый проект, готовый к использованию Express.

Шаг 2 — Создание сервера Express

Теперь, когда Express установлен, создайте новый файл server.js и откройте его в вашем редакторе кода. Затем добавьте следующие строки кода:

server.js
const express = require('express');

const app = express();

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

server.js
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, чтобы отправить ответ: 'Успешный ответ.'.

server.js
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, которая указывает приложению на каком порту слушать. Функция, переданная в качестве второго параметра, является необязательной и выполняется при запуске сервера. Это дает нам обратную связь в консоли, чтобы узнать, что наше приложение запущено.

Посмотрите на ваше окно терминала и запустите ваше приложение:

  1. node server.js

Затем посетите localhost:3000 в вашем веб-браузере. Ваше окно браузера отобразит: 'Успешный ответ'. Окно вашего терминала отобразит: 'Пример приложения слушает порт 3000.'.

И вот мы имеем веб-сервер! Однако мы определенно хотим отправить клиенту не только одну строку текста. Давайте кратко рассмотрим, что такое промежуточное программное обеспечение и как настроить этот сервер как сервер статических файлов!

Шаг 3 — Использование промежуточного программного обеспечения

С Express мы можем писать и использовать функции промежуточного программного обеспечения, которые имеют доступ ко всем HTTP-запросам, поступающим на сервер. Эти функции могут:

  • Выполнять любой код.
  • Вносить изменения в объекты запроса и ответа.
  • Завершать цикл запроса-ответа.
  • Вызывать следующую функцию промежуточного программного обеспечения в стеке.

Мы можем написать наши собственные функции промежуточного программного обеспечения или использовать сторонние промежуточное программное обеспечение, импортируя их так же, как и любой другой пакет.

Давайте начнем с написания собственного промежуточного программного обеспечения, а затем попробуем использовать некоторое существующее промежуточное программное обеспечение для обслуживания статических файлов.

Для определения функции промежуточного программного обеспечения мы вызываем app.use() и передаем ей функцию. Вот простая функция промежуточного программного обеспечения для вывода текущего времени в консоли во время каждого запроса:

server.js
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() указывает промежуточному программному обеспечению перейти к следующей функции промежуточного программного обеспечения, если таковая имеется. Это важно включить в конце нашей функции – в противном случае запрос застрянет в этом промежуточном программном обеспечении.

Мы можем необязательно передавать путь к промежуточному программному обеспечению, которое будет обрабатывать только запросы к этому маршруту. Например:

server.js
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.

Вернитесь в ваше окно терминала и запустите ваше приложение:

  1. node server.js

Затем перейдите по адресу localhost:3000/request-type в вашем веб-браузере. В вашем окне терминала будет отображаться временная метка запроса и 'Request type: GET'.

Теперь давайте попробуем использовать существующее промежуточное программное обеспечение для обслуживания статических файлов. Express поставляется с встроенной функцией промежуточного программного обеспечения: express.static. Мы также будем использовать промежуточное программное обеспечение сторонней компании, serve-index, чтобы отображать индексное список наших файлов.

Сначала в том же каталоге, где находится сервер express, создайте каталог с именем public и поместите туда некоторые файлы.

Затем установите пакет serve-index:

  1. npm install serve-index@1.9.1

Сначала импортируйте пакет serve-index в начале файла сервера.

Затем включите промежуточные обработчики express.static и serveIndex и укажите им путь к доступу и имя каталога:

server.js
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 для создания веб-сервера. Вы также использовали встроенные и сторонние функции промежуточного программного обеспечения.

Продолжайте обучение с Как использовать объект req в Express, Как использовать объект res в Express и Как определить маршруты и методы HTTP-запросов в Express.

Source:
https://www.digitalocean.com/community/tutorials/nodejs-express-basics