Express — замечательный фреймворк, облегчающий создание NodeJS-приложений. Он может полностью взять на себя всю рутинную работу по организации структуры приложения (посмотри как быстро развернуть приложение с помощью Express) или просто предоставить максимально удобные способы решения наиболее популярных задач.

Начать работать с Express очень просто.

Инициализация

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

Затем откройте командную строку в этой папке и выполните команду:

npm init

Команда npm init инициализирует node.js-приложение и создаст в папке новый файл package.json. Вам придется ответить на несколько вопросов для его формирования или пропустить их и тогда будут использованы значения по умолчанию. Чтобы сразу пропустить все вопросы, можно использовать команду:

npm init -y

Флаг -y означает yes — согласие со всеми дефолтными значениями.

Важным моментом тут является определение точки входа в приложение (поле main в файле package.json). По умолчанию это файл index.js, но вы можете установить любое другое имя файла.

Вы всегда можете отредактировать файл вручную.

Установка Express

Теперь установите фреймворк Express в папку приложения.

npm install express --save

Флаг save обеспечит сохранение его среди зависимостей вашего приложения в файле package.json.

Простой сервер

А теперь напишем простейший сервер (в главном файле index.js, если вы не меняли его названия), чтобы понять, как работает Express.

// подключение фреймворка
let express = require('express');
let app = express();

// обрабатываемые маршруты
// на остальных будет 404 ошибка
app.get('/', function (req, res) {
    res.send('Hello World!');
});

// прослушка порта 
app.listen(3000, function () {
   console.log('Example app listening on port 3000!');
});

Чтобы запустить сервер, нужно выполнить команду:

node index.js

Эта команда выполнит код, который находится в файле index.js, то есть создаст и запустит сервер.

Увидеть работу этого сервера можно, набрав в адресной строке браузера localhost: 3000.

Этот простейший сервер обрабатывает только get-запросы к главной странице, возвращая в ответ строку "Hello world". Больше он ничего не умеет, но это уже немало.

Автообновление сервера

Если вы будете изменять код сервера (а вы точно будете), придется каждый раз перезапускать его из командной строки, чтобы увидеть изменения, или воспользоваться утилитой nodemon.

npm install nodemon -g
nodemon index.js

Утилита устанавливается глобально (флаг -g). После запуска она наблюдает за изменениями файла index.js.

Маршрутизация

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

app.METHOD(PATH, HANDLER)
  • app — это объект приложение, который мы создали в самом начале кода;
  • METHOD — метод Http-запроса (get/post/put/delete);
  • PATH — собственно маршрут, например ‘/about’;
  • HANDLER — функция-обработчик маршрута (контроллер).

Обработчик в самом простом случае просто отправляет некие данные в качестве ответа с помощью метода send:

app.get('/', function (req, res) { 
    res.send("Main page"); 
});

app.get('/about', function (req, res) {
    res.send("Страница О компании");
});

app.post('/', function (req, res) {
    res.send('Got a POST request');
});

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

Статические файлы отдаются браузеру как есть, без обработки сервером. В Express их размещают в отдельную папку (например, public) и указывают ее, как путь для выдачи статики.

app.use(express.static('public'));

Эту строку размещают ДО описания маршрутов.

Технология такая:

  • Сервер получает запрос и прогоняет его через все эти объявления app.use — это называется промежуточной обработкой.
  • Он заглядывает в папку public, и если находит там запрашиваемый файл, то отдает его как есть. Если нет, то идет дальше, проверяя соответствие маршрутов.

Можно указать несколько папок со статическими ресурсами:

app.use(express.static('public'));
app.use(express.static('files'));

В этом случае поиск будет осуществляться в этих папках по порядку.

Чтобы запросить с клиента статический файл, не нужно указывать имя папки (public).

Путь, переданный в функцию express.static, указан относительно каталога, из которого запускается процесс node. Можно для надежности использовать абсолютный путь:

app.use(express.static(__dirname + '/public'));

1 комментарий

  • RoyalCanin
    RoyalCanin
    5/07/2021, 03:45
    щас заценим вроде тема

Оставить комментарий

*Доступные HTML-теги: a, abbr, blockquote, code, pre, del, i, em, strong, b, strike
*Не будет опубликован