Библиотеки JavaScript, которые вы должны знать как разработчик JavaScript

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

Рамда

Установить: yarn add ramda

Говоря о служебных библиотеках, некоторые могут подумать о lodash. Но ramda лучше, и вот почему:

  1. Это автоматически карри
// When the number of parameters supplied is not sufficient,
// It returns a new function which waits for more parameters.
const add10 = R.add(10) // create a function to add 10 to input
console.log(add10(3)) // 13
console.log(add10(9)) // 19

2. Неизменный

const obj = {a: 1}
const newObj = R.assoc('b', 2, obj)
console.log(newObj) // {a: 1, b: 2}
// ramda functions never mutate input parameters
console.log(obj) // {a: 1}

3. Вы можете легко составлять сложные (но читаемые) функции.

// I need to pick all `thumbnails[0].large.url` property from an array of object
// if the `url` exist, replace `http://` by `https://`,
// else returns `null`
R.map(
  R.pipe(
    R.path(['thumbnails', 0, 'large', 'url']),
    R.ifElse(
      R.isNil,
      R.always(null),
      R.replace('http://', 'https://')
    )
  )
)(articles)

Axios

Установить: yarn add axios

Как бы вы сделали HTTP-запрос? По jQuery.ajax или window.fetch API? Axios - лучшая библиотека для HTTP-запросов! Вы можете легко запрашивать различные HTTP-методы (GET, POST, DELETE и другие), и код очень удобочитаем:

// fetch from `http://example.com/articles?limit=10`
axios.get('http://example.com/articles', {
  params: {
    limit: 10
  }
})
// post data with custom header
axios.post('http://example.com/articles', {
  title: 'A very good title',
  content: 'Hello World!'
}, {
  headers: {
    Authorization: `Bearer ${accessToken}`
  }
})

Вы также можете создать клиент API с базовым URL, таймаутом и перехватчиками:

const apiClient = axios.create({
  baseURL: 'http://example.com/',
  timeout: 5000
})
apiClient.interceptors.response.use(
  response => response.data,
  error => {
    if (error.response && error.response.data) {
      throw error.response.data
    } else {
      throw {
        code: 'UNKNOWN_SERVER_ERROR',
        message: 'Unknown server error.'
      }
    }
  }
)

Dayjs

Установить: yarn add dayjs

Если вы хотите манипулировать DateTime объектами, вы можете подумать о moment или date-fns, но у меня есть лучший выбор.

Образец кода:

dayjs().startOf('month').add(1, 'day').format('YYYY-MM-DD')

Он небольшой (~ 2 КБ), неизменяемый, подключаемый к цепочке и поддерживает i18n. нужно ли мне сказать больше?

Ms

Установить: yarn add ms

Когда вам нужно установить определенные временные интервалы, например выполнять некоторый блок кода каждые 5 минут или установить время жизни токена. Вы бы сделали что-нибудь вроде:

setInterval(() => {
  console.log('Code block executed.')
}, 300000) // 5 minutes

Теперь вы можете написать:

setInterval(() => {
  console.log('Code block executed.')
}, ms('5min'))

Он более читабельный, правда?

Заключение

Итак, вот мои наиболее часто используемые библиотеки JavaScript. Попробуйте использовать их в своих проектах и ​​расскажите мне, что вы о них думаете!