Рубрики
Без рубрики

В защиту гипер модульного JavaScript

Майк Грозеклоз В защиту гипер модульного JavaScript на прошлой неделе NPM Gate была большой темой для сообщества JavaScript. Для тех из вас, кто не следил за тем, что произошло, вот TL; DR: Компания, названная Kik, спросила Aber Koçulu, чтобы дать им название проекта KIK на

Майк Грозеклоз

На прошлой неделе NPMGate была большой темой для сообщества JavaScript. Для тех из вас, кто не следил за тем, что произошло, вот TL; DR:

Компания, названная Kik, спросила Aber Koçulu дать им Кик Название проекта на NPM. Азер сказал: нет (потому что он уже использовал его). Kik снова спросил, на этот раз угрожают добиваться юристов, связанных с нарушением товарных знаков. Азер принудительно сказал, что нет, а Kik обострился на НПМ. NPM наглядна с Киком и переехала владение модулем вдали от Азер. В ответ Aber писал Я только что освободил свои модули И удалил все его пакеты из НПМ. Одна из пакетов, которые он удалил, был левая колодка Отказ

Удаление левая колодка Из НПМ по существу сломал процесс установки для любого проекта, используя его как зависимость. Влияние этого было велико, поскольку он использовался большим количеством очень популярных проектов (Babel, Atom и реагировать на имя несколько).

Интернет поймал в огне?

Все это вызвало повышение количества вопросов, большинство из которых могут быть классифицированы следующим:

  1. Был ли это нарушение товарных знаков? Юридическая проблема.
  2. Должны ли НИП пострадали с Kik? Деловой вопрос.
  3. Если вы сможете не опубликовать модуль, который является зависимостью другого модуля? Техническая проблема.
  4. Должны ли модули NPM быть мультируемым? Техническая проблема.
  5. Если сообщество использует модули, такие как левая колодка, как и зависимые зависимости? Гораздо большая дискуссия.

NPM, а их юридическая команда, будут теми, которые в конечном итоге должны выяснить бизнес и юридические вопросы (# 1 & # 2 выше). Это будет до них, чтобы определить, было ли это действительно нарушение товарных знаков, и какая политика по запросам, как это, будет идти вперед.

Для № 3 выше (способность не опубликовать модуль, который является зависимостью другого опубликованного модуля) NPM, сделало следующее утверждение:

Хотя NPM-Shrinkwrap Может помочь с некоторыми проблемами мультипликации (№ 4), единственным реальным смягчением, которое я видел, – это объединить зависимости от опубликованного пакета. Богатый Харрис объясняет это в своей статье Как не сломать Интернет с этим странным трюком Отказ

Так что приведет нас к № 6, причина этой статьи существует:

Если сообщество использует модули, такие как левая колодка, как и зависимые зависимости?

Чтобы понять, почему это даже дискуссия, мы должны сначала понять левая колодка Отказ Учитывая строку (ул), длину (Len) и символ (CH), левая колодка будет прокладывать левую сторону ул …| с CH до длины струны равен лен .

Вот вся цель питания кода левая колодка :

Идея, что 17 строк кода (221 символов) оказалась за импультом Интернета, создало много жалоб на использование гипермодулярных пакетов в сообществе JavaScript.

Так с этим, (наконец) я начинаю.

NPMGate не имел ничего общего с размером левого модуля

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

Азер снял 272 модулей во время исхода от NPM. Это определенно безопасно, чтобы сказать, что левая колодка был написан разработчиком, который зарекомендовал себя в сообществе.

Те, кто утверждает, что имеет зависимость, как левая колодка добавляет риск для их проекта, по сути, спорят против иметь любой Внешние зависимости NPM в их проекте.

Да, мы все можем написать модули, такие как левая площадка с нуля

Но почему мы хотим?

Весь причина коммунальных библиотек, таких как jquery а также Лоташ были созданы, чтобы сделать опыт разработчика лучше.

Уверен, что код за левая колодка не очень сложный, и это, вероятно, может быть переписано любым из нас через несколько минут. Некоторые могут даже наслаждаться объездным. То, что сказал, переключение контекста от записи кода, решая проблему под рукой, чтобы написать метод, который манипулирует строки, похоже на плохое использование времени и энергии. Помните, только потому, что мы можем сделать что-то, что не значит, что мы должны.

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

Сообщество

Существует разум NPM, превзойдет все другие менеджеры по пакетам, когда дело доходит до роста. Барьер для участия в участию путем публикации пакета в НПМ чрезвычайно мало.

Включение большего количества разработчиков принять участие в процессе, независимо от размера вклада, может только привести к увеличению сообщества.

Бесплатный рынок JavaScript

Стандарты, вероятно, никогда не смогут идти в ногу с импульсом и скоростью, на которых перемещается сообщество JavaScript. Хорошо. В этом новом мире бесплатный рынок JavaScript, пусть выигрывает лучший модуль. Хорошие модули должны расти, поскольку они получают больше загрузки и вовлеченности сообщества, тогда как модули не используются или поддерживаются, медленно исчезнет в виртуальных пропагах. На самом деле, есть случаи, такие как Bluebird , где библиотека сообщества выйдет в стандартную библиотеку (см. Почему родные ES6 обещают медленнее и более памятью, чем синяя птица? )

Так что со всеми этими модулями, как вы знаете, какие модули безопасны для использования? Правда в том, что и в случае любого программного обеспечения с открытым исходным кодом, вы никогда не знаете наверняка. Но вот тест Litmus, который я использую, когда в том числе ничего из NPM в моем проекте:

  1. Пакет хорошо документирован?
  2. Есть ли у него тесты?
  3. Люди используют это?
  4. У сообщества есть мнения об этом (обычно это только относится к большим модулям)?

Это не о размере, это о функциональности

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

Прочность любого хорошего гипермодулярного пакета заключается в том, что он будет иметь четко определенный интерфейс, четко документированный и хорошо проверен. Разве мы не хотим, чтобы весь наш код быть составлен от таких модулей?

Модули при составлении композиции

В конце концов, это все о композиции. Итак, давайте продолжим строительство модулей, давайте будем использовать эти модули для создания других модулей и тех модулей для создания систем. Давайте сочиняем эти системы вместе, чтобы начать строить вещи, которые никогда не были сделаны ранее.

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

Спасибо.

Оригинал: “https://www.freecodecamp.org/news/in-defense-of-hyper-modular-javascript-33934c79e113/”