Featured

14 самых популярных Node.js-библиотек в 2020 году

14 самых популярных Node.js-библиотек в 2020 году

Доброго времени суток, друзья!

Представляю Вашему вниманию перевод статьи «14 Most Useful NodeJS Libraries in 2020».

В данной статье автор делится своими находками среди многочисленных пакетов Nodejs.

Express
Быстрый, гибкий, минималистичный, легкий в изучении фреймворк для веб-разработки.

Отлично подходит для

  • разработки приложений с использованием стека MEAN (MongoDB, Express, Angular, Node) или MERN (React вместо Angular)
  • легкой обработки различных типов запросов, таких как GET, PUT, POST и DELETE
  • быстрого развертывания одностраничных, многостраничных и гибридных приложений

Количество скачиваний за неделю
11 млн

Альтернативы
Koa, Hapi, Meteor

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, поэтому приношу извинения за возможные ошибки и опечатки.

Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.

Источник

Zeen is a next generation WordPress theme. It’s powerful, beautifully designed and comes with everything you need to engage your visitors and increase conversions.

Ещё
Идеальный макияж на Новый год: 10 ярких идей дымчатого мейка из TikTok
Идеальный макияж на Новый год: 10 ярких идей дымчатого мейка из TikTok