
TL;DR: обзор 16 основных пакетов для Node.js-разработки, доступных в NPM, включая Express.js для создания веб-приложений, Axios для выполнения HTTP-запросов и Mongoose для работы с базами данных MongoDB.
Node.js зарекомендовала себя как одна из лучших сред в области веб-разработки, позволяющая создавать мощные масштабируемые приложения. По большей части это можно объяснить обширной экосистемой пакетов, доступных разработчикам в Node Package Manager (NPM). Эти пакеты помогают разработчикам ускорить выполнение задач, повышают производительность и избавляют от необходимости изобретать велосипеды.
В этой статье мы рассмотрим 16 обязательных для любого Node.js-разработчика NPM-пакетов. Мы подробно расскажем о них, включая их ключевые особенности, как их установить и как именно вы можете использовать их в своих проектах для улучшения ваших рабочих процессов.
1. Express
Express — это минималистичный Node.js-фреймворк для создания веб-приложений и API. Он упрощает обработку HTTP-запросов и ответов, при этом предоставляя разработчикам достаточно гибкости, чтобы они могли создавать приложения так, как им нужно.
Особенности
-
Легковесный и быстрый.
-
Поддержка middleware для расширения функционала.
-
Упрощенная маршрутизация.
-
Служебные методы HTTP для обработки ответов.
Установка
Для установки NPM-пакета Express достаточно использовать следующую команду:
npm install express
Как он работает?
Express обеспечивает гибкую маршрутизацию с помощью таких методов, как app.get() и app.post(), и middleware-функций, таких как express.json(), для таких задач, как парсинг JSON, защита данных и логирование. Вспомогательные методы res.send() и res.json() упрощают отправку HTML- или JSON-ответов.
Вот пример простого сервера Express с двумя маршрутами:
const express = require('express');
const app = express();
app.use(express.json()); // Middleware для обработки JSON-тела запроса.
// Маршрут для обработки GET-запросов.
app.get('/', (req, res) => {
res.send('Welcome to the Express web server!');
});
// Маршрут для обработки POST-запросов.
app.post('/submit', (req, res) => {
const data = req.body;
res.send(Data received: ${JSON.stringify(data)} );
});
Рабочую демонстрацию Express можно найти на StackBlitz.
2. Axios
Axios — это HTTP-клиент на основе промисов, который упрощает отправку HTTP-запросов из Node.js и браузеров. По умолчанию Axios обрабатывает промисы (специальные объекты, которые содержат свое состояние), делая получение асинхронных данных простым и читаемым.
Особенности
-
Обеспечивает поддержку промисов для обработки асинхронных запросов.
-
Автоматическое преобразование данных запроса/ответа (по умолчанию JSON).
-
Перехватчики для изменения чего-либо в запросе или ответе.
-
Прерывает сбои запросов с помощью встроенной системы обработки ошибок.
Установка
Для установки NPM-пакета Axios достаточно использовать следующую команду:
npm install axios
Как он работает?
Axios берет на себя автоматизацию таких задач, как преобразование данных в JSON и обработка ошибок. Например, если разработчик получает данные с помощью метода axios.get(), он автоматически парсит ответ в JavaScript-объект.
axios.get('https://api.example.com/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
С помощью перехватчиков (interceptors) Axios вы можете изменять запросы и ответы, например, добавлять токены аутентификации или вести логи. Ниже приведен пример с заголовками аутентификации.
axios.interceptors.request.use(config => {
config.headers.Authorization = 'Bearer token';
return config;
});
Рабочую демонстрацию Axios можно найти на StackBlitz.
3. Mongoose
Mongoose — это ORM-библиотека MongoDB для Node.js. Она позволяет разработчикам определять формат, в котором должны храниться данные MongoDB, и предоставляет простой способ взаимодействия с MongoDB через JavaScript-объекты.
Особенности
-
Моделирование данных на основе схем.
-
Встроенная проверка данных.
-
Обработка сложной логики с помощью middleware.
-
Построение запросов и популирование на основе отношений.
Установка
Для установки NPM-пакета Mongoose достаточно использовать следующую команду:
npm install mongoose
Как он работает?
Mongoose работает со схемами, которые определяют структуру хранимых в БД данных. Схема в Mongoose сопоставляется с коллекцией MongoDB и определяет форму документов в этой коллекции. После определения схемы модели Mongoose позволяют разработчикам легко выполнять операции создания, чтения, обновления и удаления данных.
Определение схемы в Mongoose выглядит следующим образом:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
email: String,
age: Number
});
В этой схеме Mongoose определяет, что каждый документ в коллекции пользователей будет содержать поля имени, электронной почты и возраста.
Mongoose также заботится о валидации:
const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true },
age: { type: Number, min: 0 }
});
Теперь каждый раз, когда вы пытаетесь сохранить пользовательский документ, Mongoose будет настаивать на том, что ваше имя и электронная почта обязательны, а ваш возраст должен быть положительным числом.
Middleware-функции Mongoose выполняются на различных этапах жизненного цикла запроса (до или после сохранения, обновления документа и т. д.). Например, вы можете добавить middleware, которое автоматически обновляет таймстэмп перед сохранением документа. Выглядеть это будет следующим образом:
userSchema.pre('save', function(next) {
this.updatedAt = Date.now();
next();
});
4. Sequelize
Sequelize — одна из самых известных ORM для Node.js. Она позволяет разработчикам определять модели на JavaScript, легко выполнять CRUD-операции, управлять отношениями и миграциями в базах данных без необходимости использовать чистый SQL.
Особенности
-
Поддержка MySQL, PostgreSQL, SQLite и MariaDB.
-
Определение схемы на основе модели.
-
Управление ассоциациями и отношениями (один-ко-многим, многие-ко-многим).
-
Встроенная поддержка миграций и транзакций.
Установка
Для установки NPM-пакета Sequelize достаточно использовать следующую команду:
npm install sequelize
npm install mysql2 // или драйвер другой базы данных, например pg для PostgreSQL
Как он работает?
С помощью Sequelize вы можете определять модели, которые будут представлять таблицы в вашей базе данных:
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql' // Вы можете использовать 'postgres', 'sqlite' и т. д.
});
const User = sequelize.define('User', {
username: {
type: DataTypes.STRING,
allowNull: false
},
age: {
type: DataTypes.INTEGER
}
});
В следующем примере User — это модель, представляющая таблицу пользователей в вашей базе данных. Sequelize оборачивает ее, позволяя использовать модель так, как если бы это был JavaScript-объект.
// Создаем нового пользователя.
User.create({ username: 'JohnDoe', age: 30 });
// Ищем пользователя.
User.findOne({ where: { username: 'JohnDoe' } });
// Изменяем данные пользователя.
User.update({ age: 31 }, { where: { username: 'JohnDoe' } });
// Удаляем пользователя.
User.destroy({ where: { username: 'JohnDoe' } });
Sequelize также поддерживает ассоциации, с помощью которых можно управлять отношениями между таблицами. Например, если у пользователя много постов:
const Post = sequelize.define('Post', { title: DataTypes.STRING });
User.hasMany(Post);
Post.belongsTo(User);
Это создаст необходимые отношения внешних ключей между таблицами users и posts.
Рабочую демонстрацию Sequelize можно найти на StackBlitz.
5. Socket.io
Socket.io — это библиотека, обеспечивающая двунаправленную связь между веб-клиентами и серверами в режиме реального времени. Хорошим примером могут служить чат-приложения, уведомления в реальном времени или многопользовательские игры.
Особенности
-
Обеспечивает связь в режиме реального времени на основе событий.
-
Поддерживает протокол WebSocket с возможностью fallback’а.
-
Работает на множестве разных платформ и устройств.
-
Простая интеграция с Node.js-серверами.
Установка
Для установки NPM-пакета Socket.io достаточно использовать следующую команду:
npm install socket.io
Как он работает?
Ниже представлен пример чата, в котором пользователи могут отправлять сообщения другим пользователям в режиме реального времени. Сервер будет прослушивать входящие соединения от клиента. Он отправляет приветственное сообщение, когда соединение установлено, а затем транслирует сообщения чата всем подключенным в данный момент клиентам.
Серверная сторона (Node.js):
const io = require('socket.io')(3000);
io.on('connection', socket => {
console.log('A user connected');
socket.emit('message', 'Welcome to the chat!');
socket.on('chatMessage', msg => {
io.emit('message', msg); // Передача сообщения всем клиентам
});
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
Клиентская сторона (HTML/JavaScript):
const socket = io('http://localhost:3000');
socket.on('message', message => {
console.log(message);
});
document.getElementById('sendButton').addEventListener('click', () => {
const msg = document.getElementById('messageInput').value;
socket.emit('chatMessage', msg);
});
Рабочую демонстрацию Socket.io можно найти на StackBlitz.
6. Webpack
Webpack — популярный пакет модулей для JavaScript-приложений, используемый в основном для объединения и управления зависимостями при веб-разработке. Он принимает различные модули (JavaScript, CSS, изображения и т. д.) и компилирует их в один или несколько оптимизированных для развертывания пакетов.
Особенности
-
Упаковка пакетов с JavaScript, CSS, изображениями и прочими типами данных в оптимизированные файлы.
-
Разделение кода для повышения производительности.
-
Поддержка загрузчиков для работы с различными типами файлов (Babel, Sass и т.д.).
-
Горячая замена модулей для ускорения разработки.
Установка
Для установки NPM-пакета Webpack достаточно использовать следующую команду:
npm install webpack webpack-cli --save-dev
Как он работает?
Webpack начинает с точки входа, обычно это ваш основной JavaScript-файл, и строит граф зависимостей, анализируя все модули (JavaScript, CSS, изображения и т. д.), необходимые для вашего проекта. Затем он объединяет эти файлы в оптимизированные для развертывания выходные файлы.
Процесс происходит следующим образом:
-
Точка входа — Webpack начинает упаковку с указанного начального файла (например, src/index.js).
-
Загрузчики — Он использует загрузчики для предварительной обработки таких файлов, как JavaScript (через Babel) и CSS (через style-loader).
-
Плагины — Дополнительные задачи, такие как оптимизация кода или генерация HTML-файлов, выполняются плагинами.
-
Результат — Конечный оптимизированный пакет (пакеты) сохраняется в выходном каталоге (например, dist/).
// webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}
]
}
};
Рабочую демонстрацию Webpack можно найти на StackBlitz.
7. Jest
Jest — это мощная платформа тестирования от Facebook, созданная с прицелом на максимальную простоту использования. Jest предлагает полный набор функций тестирования, таких как тестовые утверждения, мокинг и snapshot-тестирование, а также готовые решения для модульных, интеграционных и сквозных тестов. Довольно простой в использовании, Jest также может без настройки работать прямо из коробки со многими библиотеками и фреймворками JavaScript, включая React и Node.js.
Особенности
-
Отсутствие необходимости что-либо настраивать для большинства проектов.
-
Встроенные утверждения и программа запуска тестов.
-
Snapshot-тестирование для компонентов пользовательского интерфейса.
-
Моки и шпионы (spies) для тестирования сложных функций.
Установка
Для установки NPM-пакета Jest достаточно использовать следующую команду:
npm install --save-dev jest
Как он работает?
Вот базовый тест с использованием Jest, проверяющий, правильно ли функция складывает два числа:
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Вы можете найти рабочую демонстрацию Jest на StackBlitz.
8. JsonWebTokens (JWT)
JsonWebToken — одна из самых популярных библиотек Node.js для аутентификации на основе токенов. Она предоставляет компактное средство для безопасной передачи информации. JWT имеют цифровую подпись и широко используются для stateless аутентификации, избавляя сервер от необходимости хранить данные о сеансе.
Особенности
-
Безопасная передача данных между сторонами.
-
Аутентификация без сохранения данных, что снижает нагрузку на сервер.
-
Поддерживаются как подписанные, так и зашифрованные токены.
-
Хорошо работает с различными фреймворками аутентификации, такими как Passport.
Установка
Для установки NPM-пакета JWT достаточно использовать следующую команду:
npm install jsonwebtoken
Как он работает?
В следующем примере создается JWT, содержащий полезную нагрузку userId: 123. Он подписывает токен секретным ключом и устанавливает срок его действия в 1 час. Теперь, когда клиент отправляет токен обратно на ваш сервер, ваш сервер может проверить, что токен подлинный и не изменен, поскольку он был подписан правильным секретным ключом. Функция jwt.verify проверяет подпись токена и срок его действия. Если токен действителен, она возвращает декодированную полезную нагрузку, позволяя серверу получить доступ к userId и любой другой информации, содержащейся в токене. Если токен недействителен или срок его действия истек, возвращается ошибка, предотвращающая несанкционированный доступ.
const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId: 123 }, 'your-secret-key', { expiresIn: '1h' });
console.log(token);
jwt.verify(token, 'your-secret-key', (err, decoded) => {
if (err) {
console.log('Invalid token');
} else {
console.log('Valid token:', decoded);
}
});
Рабочую демонстрацию JsonWebTokens можно найти на StackBlitz.
Научиться всем необходимым навыкам и инструментам, чтобы с нуля стать Fullstack-разработчиком, можно на онлайн-специализации.
9. Cors
CORS расшифровывается как Cross-Origin Resource Sharing. Это то, что разработчики браузеров внедряют в качестве защиты, не позволяющей веб-страницам обращаться к доменам, отличным от их собственных. Пакет CORS в Node.js настраивает домены, которым разрешено взаимодействовать с вашим API. Это особенно полезно при размещении клиента и сервера на разных доменах или портах. Вы можете быть уверены, что обмен данными между источниками происходит безопасно и под контролем.
Особенности
-
Обеспечивает легкую настройку cross-origin политик.
-
Позволяет настраивать определенные домены, методы и заголовки.
-
Поддержка предварительных запросов для метода OPTIONS.
Установка
Для установки NPM-пакета CORS достаточно использовать следующую команду:
npm install cors
Как он работает?
Вот как можно разрешить в CORS все домены:
const cors = require('cors');
const express = require('express');
const app = express();
app.use(cors()); // Включаем CORS для всех источников.
Вы также можете настроить CORS так, чтобы были разрешены только определенные домены:
app.use(cors({
origin: 'https://example.com' // Разрешаем только этот домен.
}));
Кроме того, вы можете указать другие параметры, например разрешенные методы HTTP или заголовки.
app.use(cors({
origin: 'https://example.com',
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
Рабочую демонстрацию CORS можно найти на сайте StackBlitz.
10. Lodash
Lodash — это служебная библиотека на JavaScript для глубокого клонирования, манипуляций с массивами, слияния объектов и многого другого. Она облегчает жизнь разработчикам при работе со сложными преобразованиями данных, позволяя им писать более чистый и эффективный код.
Особенности
-
Глубокое клонирование объектов и массивов.
-
Функции для работы с массивами и объектами.
-
Оптимизированная производительность для работы с большими массивами данных.
-
Вспомогательные функции из функционального программирования (например, map, reduce, filter).
Установка
Для установки NPM-пакета Lodash достаточно использовать следующую команду:
npm install lodash
Как он работает?
Lodash предоставляет множество служебных функций, облегчающих работу со стандартными структурами данных JavaScript. Одной из самых мощных функций является поддержка глубокого клонирования — способа получения реальной копии объекта или массива с сохранением вложенных данных.
Пример глубокого клонирования объекта:
const _ = require('lodash');
const original = { name: 'Mark', age: 30, nested: { city: 'London' } };
const clone = _.cloneDeep(original);
console.log(clone); // Вывод: { name: 'Mark', age: 30, nested: { city: 'London' } }
Среди остальных приятных утилит для работы с массивами, доступных в Lodash, можно выделить _.chunk(). chunk разбивает массив на части заданного размера:
const array = [1, 2, 3, 4, 5, 6];
const chunked = _.chunk(array, 2);
console.log(chunked); // Output: [[1, 2], [3, 4], [5, 6]
В дополнение к этим утилитам Lodash предоставляет функции для работы с объектами, массивами и строками в стиле функционального программирования, что делает ваш код более лаконичным и удобным для чтения.
Вы можете найти рабочую демонстрацию Lodash на StackBlitz.
11. Bcrypt
Bcrypt — одна из самых востребованных библиотек для хеширования паролей в Node.js. Она обеспечивает защищенный метод хеширования и сравнения паролей, что очень важно для защиты пользовательских данных в приложениях, использующих аутентификацию.
Особенности
-
Защищенное хэширование паролей.
-
Автоматический salting для усиления хэшей паролей.
-
Поддерживает сравнение паролей.
-
Устойчивость к brute-force атакам.
Установка
Для установки NPM-пакета Bcrypt достаточно использовать следующую команду:
npm install bcryptjs
Как он работает?
В основе работы Bcrypt лежит механизм хеширования пароля и хранения его в базе данных. При входе в систему введенный пароль сравнивается с сохраненным хэшем.
Вот как выглядит хэширование пароля с помощью Bcrypt:
const bcrypt = require('bcryptjs');
const password = 'myPassword123';
bcrypt.hash(password, 10, (err, hash) => {
if (err) throw err;
console.log(hash); // Хешированный пароль
});
Чтобы сравнить пароль с сохраненным хэшем:
bcrypt.compare('myPassword123', hash, (err, res) => {
if (res) {
console.log('Password matches');
} else {
console.log('Password does not match');
}
});
Рабочую демонстрацию Bcrypt можно найти на StackBlitz.
12. Dotenv
Dotenv — это популярный NPM-пакет для поддержки переменных окружения в приложениях Node.js. Он позволяет надежно хранить конфиденциальные данные, такие как ключи API или учетные данные баз данных, вне основной кодовой базы, сохраняя чистоту и защищенность конфигурации.
Особенности
-
Загружает переменные окружения из файла .env в файл process.env.
-
Обеспечивает защищенность конфиденциальных данных и отделяет их от вашего кода.
-
Работает в различных средах (разработка, тестирование, производство).
Установка
Для установки NPM-пакета Dotenv достаточно использовать следующую команду:
npm install dotenv
Как он работает?
Чтобы использовать Dotenv, создайте файл .env в корне проекта и определите переменные окружения:
DATABASE_URL=postgres://user:password@localhost:5432/mydb
API_KEY=123456789abcdef
Затем в своем приложении загрузите эти переменные с помощью Dotenv:
require('dotenv').config();
console.log(process.env.DATABASE_URL); // Вывод: postgres://user:password@localhost:5432/mydb
Вы можете создавать отдельные файлы .env для управления различными окружениями. Вы можете легко менять окружения, не трогая кодовую базу.
Рабочую демонстрацию Dotenv можно найти на StackBlitz.
13. Winston
Winston — это многоцелевая, гибкая библиотека протоколирования Node.js для захвата и форматирования логов. Она поддерживает логирование в файл, консоль или внешние сервисы ведения логов, что делает ее хорошим решением для отслеживания ошибок, предупреждений и информационных сообщений в продакшене.
Особенности
-
Несколько способов логирования (файл, консоль, удаленные службы).
-
Настраиваемые уровни логирования (например, ошибка, предупреждение, информация, отладка).
-
Форматирование и окрашивание логов.
-
Поддержка обработки исключений и не пойманных ошибок.
Установка
Для установки NPM-пакета Winston достаточно использовать следующую команду:
npm install winston
Как он работает?
Вот как можно настроить Winston на вывод сообщений в консоль или в файл:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'logs/app.log' })
]
});
logger.info('This is an informational message');
logger.error('This is an error message');
В этом примере Winston записывает сообщения в консоль и файл app.log. Он форматирует сообщения с помощью цветов и простого текста, чтобы их было легче читать в консоли. Winston также поддерживает обработку ошибок, регистрируя не пойманные исключения и не обработанные отказы промисов, что гарантирует, что критические ошибки будут зафиксированы и записаны в логах для последующего анализа.
Вы можете найти рабочую демонстрацию Winston на StackBlitz.
14. Morgan
Morgan — это middleware для регистрации HTTP-запросов для Node.js. Он регистрирует все HTTP-запросы к вашему серверу в формате, который вы определяете сами. Вероятно, он наиболее известен благодаря использованию в приложениях Express для регистрации входящих запросов, чтобы отслеживать трафик и помогать отлаживать проблемы, записывая подробную информацию о каждом запросе, включая метод запроса, URL запроса, время ответа и статус ответа.
Особенности
-
Протоколирование HTTP-запросов для приложений Express.
-
Предопределенные форматы логов (например, комбинированный, общий, dev).
-
Настраиваемые строки формата лога.
-
Возможность отображать в логах дополнительную информацию, например время ответа и код состояния.
Установка
Для установки NPM-пакета Morgan достаточно использовать следующую команду:
npm install morgan
Как он работает?
Вот выглядит использование Morgan с Express-приложением:
const morgan = require('morgan');
const express = require('express');
const app = express();
// Используем комбинированный формат логов
app.use(morgan('combined'));
app.get('/', (req, res) => {
res.send('Hello, Morgan!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
В приведенном выше примере показано, как Morgan устанавливает логирование для каждого входящего HTTP-запроса в комбинированном формате, включая удаленный IP, метод — URL, время ответа и код состояния. Morgan также позволяет определять пользовательские форматы логов, указывая строку формата. Например, вы можете записывать в логи только метод запроса, URL и код состояния:
app.use(morgan(':method :url :status'));
Рабочую демонстрацию Morgan можно найти на сайте StackBlitz.
15. Moment
Moment.js — одна из самых популярных JavaScript-библиотек для парсинга, проверки и манипулирования датами и временем. Она упрощает работу с датами, поддерживает часовые пояса и предлагает форматирование с учетом местных особенностей.
Особенности
-
Упрощает парсинг, проверку и форматирование даты.
-
Поддерживает преобразование часовых поясов и локализацию.
-
Предоставляет утилиты для относительного времени (например, “5 минут назад”).
Установка
Для установки NPM-пакета Moment достаточно использовать следующую команду:
npm install moment
Как он работает?
Вот как можно создать Moment-объект из строки даты, а затем отформатировать его нужным вам образом:
const moment = require('moment');
const now = moment(); // Текущая дата и время
console.log(now.format('MMMM Do YYYY, h:mm:ss a'));
Рабочую демонстрацию Moment можно найти на сайте StackBlitz.
16. Joi
Joi — это библиотека валидации схем для JavaScript, которая обычно используется для проверки полезной нагрузки API-запросов или пользовательского ввода в приложениях Node.js. Она позволяет определять и применять сложные правила проверки данных в простом и удобном для чтения формате. Joi гарантирует, что входящие данные соответствуют ожидаемой структуре и формату, помогая избежать в вашем приложении проблем с невалидными или вредоносными данными.
Особенности
-
Валидация объектов, массивов, чисел и других объектов на основе схем.
-
Пользовательские правила проверки и сообщения об ошибках.
-
Встроенное приведение и преобразование типов.
-
Поддерживает проверку вложенных объектов.
Установка
Для установки NPM-пакета Joi достаточно использовать следующую команду:
npm install joi
Как он работает?
Вот пример использования Joi для проверки пользовательского объекта:
const Joi = require('joi');
const schema = Joi.object({
name: Joi.string().min(3).required(),
age: Joi.number().integer().min(0).required()
});
const userInput = { name: 'John', age: 25 };
const validation = schema.validate(userInput);
if (validation.error) {
console.log('Validation error:', validation.error.details);
} else {
console.log('Valid data:', userInput);
}
В этом примере Joi проверит, соответствует ли пользовательский ввод схеме или нет. Схема ожидает, что имя должно быть строкой не менее чем из трех символов, а возраст — положительным целым числом. Если проверка не проходит, возвращается сообщение об ошибке.
Joi также поддерживает пользовательские правила валидации, что позволяет расширить ее функциональность для более специфических нужд:
const customSchema = Joi.string().custom((value, helpers) => {
if (value === 'forbidden') {
return helpers.error('any.invalid');
}
return value; // Валидные данные
});
Рабочую демонстрацию Joi можно найти на StackBlitz.
Заключение
Экосистема NPM предоставляет Node.js-разработчикам универсальный набор пакетов для оптимизации процесса разработки, расширения функциональности и упрощения сложных задач. От Express для веб-фреймворков до Joi для валидации данных — эти пакеты охватывают важнейшие области разработки современных приложений. Эти популярные NPM -пакеты позволяют разработчикам создавать более производительные, масштабируемые и поддерживаемые приложения, что, в свою очередь, повышает их качество.
19 марта пройдет открытый урок на тему «Прототипное наследование в JavaScript».
На данном занятии мы разберемся, что такое прототипное наследование в JavaScript и как оно может помочь при разработке программ. Записаться можно по ссылке.
Источник: https://habr.com/ru/companies/otus/articles/891612/