Плагины и библиотеки

1. Введение

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

Термины фреймворк, библиотека и инструмент могут означать разные вещи в зависимости от контекста. Грань между ними довольно смутная. Фреймворк может содержать в себе библиотеку. Библиотека может реализовывать фреймворко-подобные методы. Инструменты могут быть неотъемлемой частью обоих. Дадим общие определения.

2. Библиотека

Библиотека — это структурированный набор полезного функционала: функций, объектов или классов, которые вы можете использовать в своем приложении. Библиотека абстрагирует различные слои, так что вам не нужно беспокоиться об их деталях реализации. Библиотека сокращает время разработки, позволяя вам не беспокоиться о мелочах.

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

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

Отрицательные стороны:

  • Баг в реализации библиотеки может вызвать сложности в его нахождении и исправлении.

  • Нет гарантии, что команда разработчиков оперативно выпустит патч.

  • Патч может изменить API, что повлечет за собой значительные изменения в вашем коде.

3. Фреймворк

Фреймворк — это каркас (скелет) приложения. Он обязывает разработчика строить архитектуру приложения в соответствии с некоторой логикой, а так же предоставляет некоторый интерфейс для взаимодействия с собой. Фреймворк обычно предоставляет функционал вроде событий, хранилищ и связывания данных, шаблониацию и другие.

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

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

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

Его минусы:

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

  • Большая экосистема пакетов может сбивать с толку и требует времени на изучение.

4. Инструмент

Инструмент — это вспомогательное средство разработки, но он не является неотъемлемой частью проекта. Инструменты включают в себя системы сборки, линтеры, компиляторы, транспайлеры, системы развертывания и другое.

Инструменты призваны облегчать процесс разработки. Например Babel, который предоставляет возможность преобразования современного, удобного в написании JavaScript в более старый стандарт, который может обработать большинство браузеров.

Last updated