При напряженных графиках и сжатых сроках выбор инструментов, которые действительно могут повысить производительность, имеет решающее значение.
Здесь я составил список своих любимых пакетов NPM. Для простоты просмотра я также разделил их на категории, надеясь представить более четкую структуру.
Конечно, вам не нужно устанавливать и изучать их все. В большинстве случаев одного выбора на категорию достаточно для удовлетворения производственных потребностей. Я просто хочу предоставить немного больше альтернатив, чтобы помочь каждому читателю найти для себя лучший вариант. Без лишних слов, давайте начнем!
🧰 Утилиты
Lodash
lodash— это современная служебная библиотека JavaScript, обеспечивающая модульность, производительность и множество дополнительных функций. Предоставляет множество полезных функций для массивов, объектов и других структур данных JavaScript.
Установка и примеры
yarn add lodash
Не злоупотребляйте, попробуйте использовать собственные методы ES. Некоторые из методов, которые я использую, следующие
// -----------------------------深度比较两个对象的值是否全相等
import { isEqual, cloneDeep, uniqBy, sortBy } from "lodash";
const object = { a: 1 };
const other = { a: 1 };
isEqual(object, other);
// => true
object === other;
// => false
// -----------------------------深拷贝
const objects = [{ a: 1 }, { b: 2 }];
const deep = cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
// -----------------------------数组去重
uniqBy([{ x: 1 }, { x: 2 }, { x: 1 }], "x");
// => [{ 'x': 1 }, { 'x': 2 }]
// -----------------------------数组排序
const users = [
{ user: "fred", age: 48 },
{ user: "barney", age: 36 },
{ user: "fred", age: 40 },
{ user: "barney", age: 34 },
];
sortBy(users, "age");
/*
[
{ 'user': 'barney', 'age': 34 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'fred', 'age': 48 },
];
*/
qs
qsОбрабатывает строки запроса URL, поддерживает встроенные объекты и массивы. Короче говоря, это преобразование параметров объектов и URL-адресов друг в друга.
Установка и примеры
yarn add qs
import { parse, stringify } from "qs";
// 用途一
// 将 浏览器上 URL地址参数转换为对象(字符串转对象)
const urlParams = parse(window.location.href.split("?")[1]);
// 用途二
// 将对象参数 传递给到后端接口--GET 请求 (对象转字符串)
const params = {
name: "wang",
age: "18",
sex: "女",
};
// => /api/user?name=wang&age=18&sex=%E5%A5%B3
const apiUrl = `/api/user?${stringify(params)}`;
classnames
classnamesУсловно группировать имена классов вместе
Установка и примеры
yarn add classnames
Ошибка ❎ Пример кода: React изначально и динамическое добавление нескольких имен классов стилей сообщит об ошибке:
import styles from "./index.less";
const Index=()=><div className={styles.class1 styles.class2}</div>
Измените его на следующий код, чтобы решить
import React from "react"
import classnames from 'classnames'
import styles from "./index.less";
const Index=()=>(<div
className=classnames({
styles.class1,
styles.class2
})>
</div>)
numeral
numeralЭто библиотека NPM, предназначенная для форматирования чисел, и numeral также может анализировать числа в различных форматах.
Установка и примеры
yarn add numeral
import numeral from "numeral";
// 解析数字
numeral("10,000.12"); // 10000.12
numeral("$10,000.00"); // 10000
numeral("3.467TB"); // 3467000000000
numeral("-76%"); // -0.76
// 格式化
numeral(10000.23).format("0,0"); // '10,000'
numeral(1000.234).format("$0,0.00"); // '$1,000.23'
cross-env
cross-envэто бегКроссплатформенностьУстановите и используйте скрипт для переменных среды
Установка и примеры
yarn add cross-env --dev
"scripts": {
"start": "cross-env REACT_APP_ENV=development webpack",
"build": "cross-env REACT_APP_ENV=production webpack",
},
path-to-regexp
path-to-regexpОн используется для обработки адреса и параметров в URL-адресе, и это очень удобно для получения нужных нам данных.
js имеетRegExpметод проверки регулярного выражения иpath-to-regexpЕго можно рассматривать как регулярное выражение строки URL.
Установка и примеры
yarn add path-to-regexp
pathToRegexpМетод может быть аналогом jsnew RegExp('xxx').
import pathToRegexp from "path-to-regexp";
const re = pathToRegexp("/foo/:bar");
console.log(re); // /^\/foo\/((?:[^\/]+?))(?:\/(?=$))?$/i
compileЗначение параметра, используемое для заполнения строки URL.
var pathToRegexp = require("path-to-regexp");
var url = "/user/:id/:name";
var data = { id: 10001, name: "bob" };
// /user/10001/bob
console.log(pathToRegexp.compile(url)(data));
📅 Формат даты
Day.js
Day.jsэто быстрый и легкийMoment.js(В чистом режиме сопровождения с сентября 2020 года, новые версии не разрабатываются) Альтернатива. Оба имеют схожие API, если у вас есть к ним доступ.Moment.js, вы можете быстро приступить к работеDay.js.
Установить
yarn add dayjs
Пример
import dayjs from "dayjs";
const myformat = "YYYY-MM-DD HH:mm:ss";
// -------------------------以字符串形式返回 当前时间
const data = dayjs().format(myformat);
// => 2020-11-25 12:25:56
// -------------------------日期格式化
const data1 = dayjs("2020-11-25 12:25:56").format("YYYY/MM/DD HH/mm/ss");
// => 2020/11/25 12/25/56
// -------------------------多久之前
var relativeTime = require("dayjs/plugin/relativeTime");
dayjs.extend(relativeTime);
const data1 = dayjs("2020-11-25 11:40:41").fromNow();
// =>
🌷 Линтеры и инструменты форматирования
ESLint
ESLint— отличный инструмент для предотвращения ошибок кодирования и принуждения команд разработчиков к использованию стандартов кодирования. ESLint — это инструмент для выявления шаблонов в коде ECMAScript/JavaScript и составления отчетов о них. ESLint полностью подключаемый, с подключаемым модулем для каждого правила, что позволяет добавлять больше контента во время выполнения.
установить и использовать
$ yarn add eslint --dev
Затем вы должны настроить файл конфигурации:
$ ./node_modules/.bin/eslint --init
После этого вы можете запустить ESLint для любого файла или каталога следующим образом:
$ ./node_modules/.bin/eslint yourfile.js
Дополнительные инструкции см.официальная документация, в котором есть много примеров начала работы и конфигурации.
Prettier
PrettierЭто стилизованный форматировщик кода. Единый стиль достигается за счет разбора кода и повторного вывода кода по собственным правилам (ограничение максимальной длины строки);
Установить
yarn add --dev --exact prettier
Пример
Создайте.prettierrc.jsДобавить собственные правила форматирования
module.exports = {
trailingComma: "es5",
tabWidth: 4,
semi: false,
singleQuote: true,
};
Создайте.prettierignoreДобавьте файлы или каталоги, которые необходимо игнорировать
# Ignore artifacts:
build
coverage
выполнить команду формата
# 格式化src目录下的所有js文件
prettier --write "src/**/*.js"
stylelint
stylelintМощное правило стиля, которое позволяет вам применять правила стиля и избегать написания кода с плохим стилем.
Установить
yarn add stylelint stylelint-config-standard --dev
Пример
Создайте.stylelintrc.jsи добавить конфигурацию
module.exports = {
extends: "stylelint-config-standard",
};
выполнить команду lint
# 检查 src目录下所有css文件是否符合规范
npx stylelint "src/**/*.css"
Husky
HuskyМожет помочь нам реализовать git-хуки просто и напрямую. Ваша команда ведет совместную разработку и хотела бы внедрить единый стандарт кодирования для всей команды? нет проблем! С помощью Husky вы можете попросить всех автоматически анализировать и тестировать свой код перед фиксацией или отправкой в репозиторий.
Установка и примеры
yarn add husky --dev
Вот пример реализации хаски-хуков:
// package.json
{
"husky": {
"hooks": {
"pre-commit": "npm lint",
"pre-push": "npm test"
}
}
}
здесьpre-commitизhooksбудет запущен до того, как вы зафиксируете в репозитории. Перед отправкой кода в репозиторий запуститсяpre-push hook.
🧙♂️ генератор данных
Uuid
uuid— это удобный крошечный пакет, который может быстро генерировать более сложные универсальные уникальные идентификаторы (UUID).
Установка и примеры
npm install uuid
import { v4 as uuidv4 } from "uuid";
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
faker.js
faker.jsОчень полезный инструментарий для генерации больших объемов поддельных данных в браузере и Node.js.
Установка и примеры
yarn add faker
import faker from "faker"
function generateCustomers () {
const customers = []
for (let id = 0; id < 50; id++) {
const firstName = faker.name.firstName()
const lastName = faker.name.firstName()
const phoneNumber = faker.phone.phoneNumberFormat()
const zipCode = faker.address.zipCode()
const date = faker.date.recent()
customers.push({
id,
firstName,
lastName ,
phoneNumber ,
zipCode,
date
})
}
return { customers }
Mock.js
Mock.js— это генератор фиктивных данных, который помогает отделить фронтенд-разработку и прототипирование от бэкэнд-процесса и уменьшает монотонность, особенно при написании автоматизированных тестов.
Установка и примеры
npm install mockjs
import Mock from "mockjs";
const Random = Mock.Random
function generateCustomers () {
const customers = []
for (let id = 0; id < 50; id++) {
const firstName = Random.first()
const lastName = Random.last()
const province = Random.province()
const date = Random.date()
customers.push({
id,
firstName,
lastName ,
province,
date
})
}
return { customers }
🧪 Тестовый инструмент
Jest
JestЭто удобный и простой в использовании фреймворк для тестирования JavaScript, основной привлекательностью которого является простота. Вы можете быстро получить результаты, написав тесты с помощью простого в использовании и многофункционального API.
Установка и примеры
yarn add --dev jest
тестовое заданиеsumфункция, функция этой функции состоит в том, чтобы сложить два числа. Сначала создайте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);
});
Добавьте следующий код вpackage.jsonсередина:
{
"script": {
"test": "jest"
}
}
Наконец, запуститеyarn test, Jest выведет следующую информацию:
PASS ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Mocha
Mocha— это многофункциональная среда тестирования javascript, которая работает в node.js и браузере, что делает асинхронное тестирование простым и увлекательным. Тесты Mocha выполняются непрерывно, что позволяет создавать гибкие и точные отчеты, а также сопоставлять неперехваченные исключения с правильными тестовыми случаями.
Установка и примеры
yarn add mocha --dev
Далее создайте файл с именемtest.jsдокумент. Этот файл содержит фактическое содержимое теста:
var assert = require("assert");
describe("Array", function () {
describe("#indexOf()", function () {
it("should return -1 when the value is not present", function () {
assert.equal([1, 2, 3].indexOf(4), -1);
});
});
});
Добавьте следующий код вpackage.jsonсередина:
{
"script": {
"test": "mocha"
}
}
Наконец, запуститеyarn test, Mocha выведет следующую информацию:
$ ./node_modules/mocha/bin/mocha
Array
#indexOf()
✓ should return -1 when the value is not present
1 passing (9ms)
👨💻 Менеджер процессов и бегун
Nodemon
nodemonИспользуется для отслеживания любых изменений в приложении node.js и автоматического перезапуска службы, что идеально подходит для использования в средах разработки.
nodemon будет следить за файлами в каталоге запуска, и если какие-либо файлы изменятся, nodemon автоматически перезапустит приложение node.
Установка и примеры
yarn add nodemon global
server.jsПредставляет файл записи Node.js.
"scripts": {
"start": "nodemon server.js",
}
PM2
PM2— менеджер производственных процессов для приложений Node.js со встроенным балансировщиком нагрузки. С его помощью вы можете поддерживать приложения в рабочем состоянии вечно, перезагружать их без простоев и упрощать общие задачи системного администрирования.
Установка и примеры
$ yarn add global pm2
Вы можете запустить любое приложение, как показано ниже (Node.js, Python, Ruby, двоичные файлы в $PATH...)
$ pm2 start app.js
Теперь ваше приложение будет охраняться, контролироваться и всегда будет активным. Подробнее об управлении процессамипосмотреть здесь:
После запуска приложений вы можете легко управлять ими. Все запущенные приложения могут быть перечислены:
$ pm2 ls
чек об оплатеофициальная документация, чтобы получить полный список функций PM2.
Concurrently
ConcurrentlyПростая и понятная — утилита для одновременного запуска нескольких команд.
Установка и примеры
yarn add concurrently global
Запустите интерфейсный проект WebPack и Backend Node Project
// package.json 同
"scripts": {
"start": "concurrently \"webpack-dev-server\" \"nodemon server.js\"",
},
Web sockets
Socket.io
Socket.IOПоддерживает возможности двусторонней связи в режиме реального времени на основе событий. Он может работать на различных платформах, браузерах и устройствах и обладает хорошей надежностью и скоростью работы.
Установка и примеры
WS
WSПростая в использовании, быстрая и полностью протестированная реализация клиента и сервера WebSocket. Это также мощная, менее абстрактная альтернатива, почти сравнимая с Socket.io.
наконец
Что еще вы используете в своей повседневной работебиблиотека инструментов npmШерстяная ткань? Добро пожаловать, чтобы оставить свое мнение в области комментариев!
Друзья, которые чувствуют выгоду, приветствуютсяподобно,Сфокусируйся наВолна!
Прошлые статьи
серия сборки реакции
- Как создать спецификации для фронтенд-разработки корпоративного уровня 🛠
- Интеграция «React Build» Webpack5/React17
- Интегрированный CSS/Less/Sass/Antd из «React Build»
- Интегрированное изображение/шрифт "React Build"
- Интеграция "React Build" Redux/Typescript
- «React Build» использует Redux-thunk для реализации асинхронных операций Redux.
- «React Build» интегрировал меню React-Router/Antd для получения разрешений на маршрутизацию.