Доброго времени суток, друзья!
Представляю Вашему вниманию перевод статьи «14 Most Useful NodeJS Libraries in 2020».
В данной статье автор делится своими находками среди многочисленных пакетов Nodejs.
Express
Быстрый, гибкий, минималистичный, легкий в изучении фреймворк для веб-разработки.
Отлично подходит для
- разработки приложений с использованием стека MEAN (MongoDB, Express, Angular, Node) или MERN (React вместо Angular)
- легкой обработки различных типов запросов, таких как GET, PUT, POST и DELETE
- быстрого развертывания одностраничных, многостраничных и гибридных приложений
Количество скачиваний за неделю
11 млн
Альтернативы
Cheerio
Предназначен для обработки («парсинга») разметки, например, HTML, предоставляет интерфейс для манипулирования («траверса») конечной структурой данных.
const cheerio = require('cheerio') const $ = cheerio.load('<ul id="fruits">...</ul>')
Отлично подходит для
- создания веб-сканеров («скребков»)
- легкий, интуитивно понятный синтаксис и инструментарий
Еженедельные загрузки
4.2 млн
Альтернативы
jsdom, puppeteer
Nodemailer
Предназначен для отправки электронных сообщений.
const nodemailer = require('nodemailer') const testAccount = await nodemailer.createTestAccount() const transporter = nodemailer.createTransport({ host: 'smtp.ethereal.email', port: 587, secure: false, auth: { user: testAccount.user, pass: testAccount.pass } }) const info = await transporter.sendMail({ from: '"John Smith" <smith@example.com>', to: 'foo@example.com, bar@example.com', subject: 'hello', text: 'hello crazy world', html: '<strong>hello crazy world</strong>' })
Отлично подходит для
- отправки сообщений по протоколу SMTP
Еженедельные загрузки
980 тыс.
Альтернативы
sendmail, emailjs
Socket.io
Предназначен для установки двустороннего основанного на событиях соединения в режиме реального времени.
const server = require('http').createServer() const io = require('socket.io')(server) io.on('connection', client => { client.on('event', data => { ... }) client.on('disconnect', () => { ... }) }) server.listen(3000)
Отлично подходит для
- реализации «живой» аналитики, потока бинарных данных, обмена сообщениями, совместной работы с документами
Еженедельные загрузки
3 млн
Альтернативы
pusher, websockets
Faker
Предназначен для получения фейковой информации в браузере и «ноде».
const faker = require('faker') const randomName = faker.name.findName() const randomEmail = faker.internet.email() const randomCard = faker.helpers.createCard() // произвольная карточка с контактными данными
Отлично подходит для
- тестирование фронтенда в части работы с данными до завершения разработки бэкенда
- большое количество методов, включая получение произвольного адреса, названия компании, базы данных, изображения, имени, фамилии и т.д.
Еженедельные загрузки
1.4 млн
Альтернативы
casual
Morgan
Представляет собой промежуточное ПО для регистрации запросов.
morgan (':method:url :status :res[content-length] - :response-time ms') --- const express = require('express') const morgan = require('morgan') const app = express() app.use(morgan('combined')) app.get('/', (req, res) => res.send('hello crazy world'))
Отлично подходит для
- записи запросов в консоль, файл, базу данных
- отладки и «логгирования»
Еженедельные загрузки
2 млн
Http-errors
Предназначен для создания конкретных ошибок в целях тестирования приложений на Express, Koa, Connect и др.
app.use((req, res, next) => { if(!req.user) return next(createError('401', 'Пожалуйста, авторизуйтесь для получения доступа.')) next() })
Отлично подходит для
- эмуляции ошибок
- доступно большое количество свойств объекта Error
expose headers message status statusCode
Еженедельные загрузки
27 млн
Body-parser
Представляет собой промежуточное ПО для разбора (парсинга) данных.
Парсит входящие запросы (req.body) перед их обработкой.
const express = require('express') const bodyParser = require('body-parser') const app = express() // парсим application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // парсим application/json app.use(bodyParser.json())
Отлично подходит для
- интерпретации тел запросов
- содержит множество полезных функций (inflate, type, verify и проч.)
Еженедельные загрузки
13 млн
Sequelize
Представляет собой основанную на промисах технологию для объектно-реляционного отображения Postgres, MySQL, MariaDB, SQLite и Microsoft SQL Server.
Поддерживает безопасные (надежные) транзакции, обмен данными, энергичную и отложенную загрузку, репликацию данных и т.д.
const sequelize = new Sequelize( 'database', 'username', 'password', { host: 'localhost', dialect: /* один из 'mysql' | 'mariadb' | 'postgres' | 'mssql' */ } )
Еженедельные загрузки
720 тыс.
Passport
Представляет собой совместимое с Express промежуточное ПО для аутентификации.
Основной задачей является аутентификация запросов с помощью набора плагинов — стратегий.
passport.use(new LocalStrategy( (username, password, done) => { User.findOne({ username: username }, (err, user) => { if(err) { return done(err) } if(!user) { return done(null, false) } if(!user.verifyPassword(password)) { return done(null, false) } return done(null, user) }) } ))
Отлично подходит для
- аутентификации
- интеграции с OAuth и OpenID (вход с помощью аккаунта Facebook, Twitter и т.д.)
Еженедельные загрузки
810 тыс.
Dotenv
Представляет собой модуль нулевой зависимости (точки) для загрузки переменных из файла .env в process.env.
Хранит переменные отдельно от кода.
require('dotenv').config() const db = require('db') db.connect({ host: process.env.DB_HOST, username: process.env.DB_USER, password: process.env.DB_PASS }) // файл .env DB_HOST = localhost DB_USER = root DB_PASS=12345
Отлично подходит для
- загрузки переменных среды, таких как AWS, sql имена пользователей, пароли, необходимые для развертывания приложений, соединения с другими инструментами
- хранения настроек окружения отдельно от кода
Еженедельные загрузки
10 млн
Multer
Промежуточное ПО для обработки multipart/form-data — загрузки изображений.
const express = require('express') const multer = require('multer') const upload = multer({ desc: 'uploads/' }) const app = express() app.post('/profile', upload.single('avatar'), (req, res, next) => { // req.file - это файл 'avatar' // req.body содержит текстовые поля при наличии }) app.post('/photos/upload', upload.array('photos', 12), (req, res, next) => { // req.files - это массив файлов 'photos' // req.body содержит текстовые поля при их наличии })
Отлично подходит для
- быстрой загрузки файлов multipart/form-data
Еженедельные загрузки
92 тыс.
Axios
Основанный на промисах HTTP-клиент для браузера и node.
const axios = require('axios') // делаем запрос пользователя по ID axios.get('/user?ID=12345') .then(response => { // код console.log(response) }).catch(error => { // обработка ошибок console.log(error) }).finally(() => { // всегда выполняется })
Отлично подходит для
- отправки запросов из Node
- отправки запросов из браузера
- поддержка промисов
Еженедельные загрузки
9.6 млн
CORS
Промежуточное ПО для Connect/Express, предназначенное для определения правил политики общего происхождения.
const express = require('express') const cors = require('cors') const app = express() app.use(cors()) app.get('/products/:id', (req, res, next) => { res.json({ msg: 'Доступны запросы из любых источников!' }) }) app.listen(80, () => { console.log('ok') })
Отлично подходит для
- решения задач, связанных с CORS
Еженедельные загрузки
3.7 млн
Уважаемые читатели, а какими библиотеками пользуетесь вы?
Прим. пер.: я новичок в Node.js, поэтому приношу извинения за возможные ошибки и опечатки.
Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.
ссылка на оригинал статьи https://habr.com/ru/post/506692/
Добавить комментарий