У TJ Holowaychuk есть небольшой NPM, конвертирующий байты в гигабайты. Я видел, как люди смотрят свысока на программистов, использующих микрозависимости, которые можно заменить несколькими строками кода. На самом деле я читал аргументы, что подобные NPM означают мы забываем, как программировать. Я думаю, что подобные NPM могут помочь нам стать лучше в программировании.

Использование NPM в узле соответствует общей философии Unix, заключающейся в том, чтобы делать только одно и только одно.

Эта философия согласуется со многими другими парадигмами программирования, включая Принцип единой ответственности ООП.

Последовательное использование NPM для задач — это шаблон, который позволяет ответственно использовать работу других. Байтовый NPM делает только одну вещь, поэтому довольно просто просмотреть его код. С другой стороны, многие типичные зависимости (Mongoose, Vue.js и т. д.) более сложны для проверки кода.

Кроме того, конверсии — это одна из тех вещей, в которых легко ошибиться. Это можно просто представить как умножение на 1024, но откуда взялось 1024? Сколько раз нужно умножить на 1024?

Использование NPM не только повысит вероятность правильного расчета, но и, вероятно, научит вас чему-то. Если вы посмотрите на байтовый NPM, магическое число 1024 используется только один раз, и вы можете увидеть его происхождение:

Килобайт определяется как:

1 << 10

Другими словами, возьмите число 1 — записанное в бинарном виде — и переместите его влево десять раз. 10000000000 в двоичном формате равно 1024 в десятичном. Большинство компьютеров работают в двоичном формате. Таким образом, 1024 не кажется таким странным выбором, как может показаться на первый взгляд, если вы знакомы с метрической системой.

Мегабайт определяется как:

1 << 20

Гигабайт определяется как:

1 << 30

Наконец, терабайт определяется — с помощью магического числа — как:

((1 << 30) * 1024)

но его также можно было бы определить как:

((1 << 30) * (1 << 10))

Так что на самом деле — концептуально — это не умножение на 1024, а сдвиг числа в двоичной системе счисления.

При переходе с левого шифта на левый пад зависимости сопряжены с риском, но они также дают вам силу. В статье на левой панели в верхней части этого поста есть фрагмент кода, и этот фрагмент кода уже устарел. Левая панель эволюционировала. На левой панели есть тесты. Если бы вы написали свой собственный левый блокнот, написали бы вы тесты? Если бы вы хотели, это хороший способ провести время? Если вы пишете фрагмент кода в проекте, как вы используете его в другом проекте? Если вы скопируете десять строк кода в десять проектов, что произойдет, когда — в одиннадцатом проекте — вы улучшите эти десять строк? С NPM вы просто увеличиваете свою версию зависимостей.

Некоторые из преимуществ использования NPM в узле:

  1. Используйте простой установленный шаблон модульности, который позволяет управлять зависимостями.
  2. Переложите работу на других (и учитесь на том, как они выполняют работу)
  3. Учитесь у других, видя, как они что-то делают
  4. Используйте тщательно протестированные и продуманные функциональные возможности (если вы правильно выбираете NPM).