Микро библиотека?

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

Почему Node.js?

Экосистема Node.js основана исключительно на модульной структуре. Вся экосистема окружена мелкозернистыми модулями, которые выполняют определенные действия. Найти пакет для достижения чего-то очень малого можно в большинстве случаев. Возможность создавать такие библиотеки/модули обусловлена ​​тем, как была создана экосистема пакетов Node.js. Эта парадигма принимается и в некоторых других экосистемах. Композитор PHP — это менеджер зависимостей, созданный под влиянием NPM.

Настройка

Давайте создадим микробиблиотеку для получения подписчиков определенного пользователя GitHub. Он должен выполнять только эту конкретную задачу. Иначе это не будет микробиблиотекой. В качестве первого шага давайте инициализируем проект с помощью NPM. (Это можно сделать и с Yarn. Прочитайте мой пост на Yarn, чтобы узнать больше).

$ mkdir github-followers
$ cd github-followers
$ npm init 
    or 
$ yarn init 

Точка входа — это файл, в котором Node.js просматривает модуль, когда программа вызывает этот модуль. Поэтому его можно рассматривать как отправную точку для нашей микробиблиотеки. Каждая вещь перенаправляется на любые требуемые функции из этой конкретной точки входа. Поскольку мы создаем простую микробиблиотеку, будет достаточно только файла точки входа. Давайте создадим файл main/entry point.

$ touch index.js

Чтобы получить подписчиков определенного пользователя, мы будем использовать REST API GitHub. Поскольку мы получаем только простой запрос GET, будет достаточно. Поэтому использование полноценной библиотеки для этой цели было бы бесполезным. Доступна еще одна микробиблиотека, предназначенная только для извлечения данных. Это http-fetcher. Давайте добавим http-fetcher в наш проект.

$ npm install http-fetcher --save 
           or 
$ yarn add http-fetcher

Любая из приведенных выше команд добавит http-fetcher в проект в качестве зависимости от проекта.

Код библиотеки

Измените файл index.js следующим образом:

Документацию по http-fetcher можно найти здесь. Давайте посмотрим, чего мы пытаемся достичь здесь. Первая строка посвящена импорту библиотеки http-fetcher. Мы вернемся ко второй строке и пока пропустим ее. Поскольку это библиотека, ее можно использовать в других программах, например, мы импортируем http-fetcher в эту программу. Поэтому для экспорта определенного сегмента можно использовать module.exports. Это экспорт функции, которая принимает только один параметр — имя пользователя GitHub. Затем используется переменная, созданная во второй строке, и :usernameget заменяется значением, полученным из параметра функции, которая вызывается из внешней программы. Поскольку Node.js — это асинхронное программирование, мы используем Promises. В рамках определения промиса был создан необходимый сегмент кода для получения пользователей с помощью http-fetchers. Вот и все о коде, ведь это микробиблиотека!.

Модульное тестирование

Теперь, когда у нас есть программа, пришло время ее модульного тестирования. Мы будем использовать мокко и чай для этой цели. Чтобы добавить мокко и чай в качестве зависимостей разработчика,

$ npm install mocha chai --save-dev 
           or 
$ yarn add mocha chai -D

Создайте каталог с именем test. В этом каталоге давайте создадим модульный тест для кода github-follower (index.test.js).

Здесь мы проводим модульное тестирование для двух экземпляров, где API GitHub будет возвращать массив объектов, когда указано действительное имя пользователя, и экземпляр, в котором будет возвращен только объект, когда предоставлено несуществующее имя пользователя.

Издательский

Создание библиотеки определенно означает, что она должна быть где-то опубликована и доступна для использования другими программистами в своих программах. Публикация в NPM очень проста. Но перед публикацией следует учесть несколько моментов. NPM использует semver или семантическое управление версиями. Поэтому версии представлены тремя цифрами, и эти цифры имеют свое собственное значение и действительно важны, когда дело доходит до изменения версии при внесении изменений в библиотеку. Изменение может быть либо кодом, либо даже документацией, потому что документация играет большую роль в программном обеспечении с открытым исходным кодом. Подробнее о semver можно прочитать в Документации NPM. Давайте опубликуем эту микробиблиотеку с помощью

$ npm publish
      or
$ yarn publish

Я лично рекомендую Yarn для публикации, потому что Yarn запрашивает изменение части перед публикацией, и это можно сделать прямо в интерфейсе командной строки, а не вручную изменять версию в package.json.

Вывод

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