Библиотека программиста 06 июля 2017

Лучшие JavaScript фреймворки, библиотеки и инструменты в 2017

Свежая подборка самых популярных и наиболее востребованных JavaScript фреймворков, библиотек и инструментов на 2017 год.





Кажется, что JS-библиотек и фреймворков больше, чем JS-разработчиков. На май 2017 года быстрый поиск по GitHub выдает более чем 1.1 миллион проектов на JavaScript. На npm.js находится 500 тысяч активно используемых пакетов с почти 10 миллиардами скачиваний каждый месяц.

Эта статья призвана объяснить элементарные различия между самыми популярными JS-фреймворками, инструментами и библиотеками. Являются ли они лучшими для вас — уже другой вопрос. Выберите что-нибудь одно и задержитесь на нем какое-то время. Но избавьте себя от заблуждения, что ваш любимый инструмент не заменится чем-нибудь «получше» независимо от вашего первоначального выбора.

Пожалуйста, примите нижеизложенные соглашения перед прочтением данной статьи:

  • Мир JavaScript меняется изо дня в день. Эта статья будет устаревшей с момента ее публикации!
  • Под «лучшими» имеются в виду «наиболее популярные проекты общего назначения». Все они бесплатны и имеют открытый исходный код, но список может не включать ваши любимые.
  • В список не попали проекты, разработка которых приостановлена, даже если они широко распространены и активно используются.
  • Упомянуты только клиентские приложения. Некоторые из них могут выполнять функции серверной части, однако список не содержит полностью серверно-ориентированных приложений вроде Express.js или Hapi.
  • Информация о каждом проекте краткая и предоставляет свободу для дальнейшего изучения.
  • У каждого проекта есть индикатор популярности, но статистика, как известно, может вводить в заблуждение.
  • Автор подборки предвзят. Вы предвзяты. Все предвзяты!

Хитрая терминология

Для разных людей слова «фреймворк», «библиотека» и «инструмент» могут означать разные вещи в зависимости от контекста. Дадим общие определения, используемые здесь.

Библиотеки

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

Библиотека обычно сокращает время разработки примерно на 20%, позволяя вам не беспокоиться о мелочах. Отрицательные стороны:

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

Фреймворки

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

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

  • последние 20% могут вызвать немалые трудности из-за ограничений, накладываемых фреймворком
  • обновление фреймворка может быть сопряжено со сложностями, а порой и вовсе невозможно
  • основной код и концепции редко удовлетворяют разработчиков в своем первозданном виде. Они всегда найдут «лучший» способ сделать что-либо.

Инструменты

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

Инструменты призваны облегчать процесс разработки. Например, многие предпочитают Sass чистому CSS, потому что он предоставляет возможность использовать циклы, функции, локальные переменные и многое другое. Браузеры не понимают Sass/SCSS синтаксис, так что код переводится в CSS.

Не вешайте на меня ярлыки!

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

JavaScript фреймворки и библиотеки

Проекты упорядочены по популярности.

jQuery

jquery

Самая популярная js-библиотека всех времен. Она произвела революцию в программировании клиентской части веб-приложений, введя селекторы CSS для доступа к узлам DOM-дерева, обработчики событий, анимации и ajax-запросы.

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

Плюсы:

  • Малый размер дистрибутива
  • низкий порог вхождения, исчерпывающая документация в интернете
  • лаконичный синтаксис
  • легко расширяемый

Минусы:

  • замедляет работу приложения
  • может повлечь проблемы совместимости с браузером
  • сообщество разработчиков протестует против его повсеместного использования

React

react

Самая горячо обсуждаемая библиотека прошедшего года. React претендует на роль библиотеки для создания пользовательских интерфейсов. Он фокусируется на «View»-части MVC-разработки и позволяет создавать компоненты интерфейса, сохраняющие свое состояние. Это была одна из первых библиотек, реализующих виртуальное DOM-дерево.

Статистика использования React может показаться довольно низкой из-за того, что он используется в основном в приложениях, а не на сайтах.

Плюсы:

  • Компактность, эффективность, производительность и гибкость
  • простая модель компонентов
  • хорошая документация и обилие онлайн-ресурсов
  • возможность рендеринга на стороне сервера
  • растущая популярность

Минусы:

  • новые концепции и синтаксис, которые придется изучить
  • необходимы системы сборки
  • может требовать сторонних инструментов и библиотек
  • может быть несовместим с кодом и другими библиотеками, модифицирующими DOM-дерево

Lodash и Uinderscore

Эти две библиотеки объединены по причине того, что обе они предоставляют сотни инструментов для расширения функциональности нативных строк, чисел, массивов и методов работы с другими примитивами. Они довольно сильно пересекаются, поэтому их не рекомендуется использовать вместе в одном проекте.

Плюсы:

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

Минусы:

  • некоторые методы доступны в ES2015 И других более поздних версиях JavaScript

AngularJS

angularjs

Первый фреймворк (или MVC фреймворк) в нашем списке. Наиболее популярной является версия 1.х, расширяющая HTML двусторонней привязкой данных одновременно с разделением манипуляций с DOM и логики приложения.

Angular 1.x до сих пор находится в разработке, несмотря на версию 2 (которая теперь версия 4!). Запутались? Читайте дальше…

Плюсы:

  • популярный фреймворк, поддерживаемый несколькими крупными компаниями
  • универсальное решение для создания современных веб-приложений
  • часть «стандартного» стека MEAN (MongoDB, Express.JS, AngularJS, NodeJS), доступны множество статей и туториалов

Минусы:

  • сложнее в освоении в сравнении с некоторыми альтернативами
  • обширная база кода
  • несовместимость с Angular 2.x
  • несмотря на то, что является проектом Google, самим Google не используется

Angular 2

angular2

Angular 2.0 был представлен миру в сентябре 2016. Он был полностью переписан и представляет модульную модель компонентов, создаваемую на TypeScript. В марте 2017 состоялся релиз версии 4.0 (третья была пропущена во избежание нестыковок в семантическом версионировании).

Плюсы:

  • универсальное решение для создания современных веб-приложений
  • все еще часть стека MEAN
  • TypeScript предоставляет некоторые преимущества для людей, знакомых с объектно-ориентированными языками вроде C# и Java

Минусы:

  • см. минусы Angular 1.x

Vue.js

vuejs

Легкий современный фреймворк для создания пользовательских интерфейсов. Предлагает React-подобный виртуальный слой ст поддержкой DOM, который может быть интегрирован с другими библиотеками.

Vue.js использует синтаксис шаблона HTML для связки DOM и данных. Модели являются простыми js-объектами, которые перестраивают интерфейс и/или контент при изменении данных.

Плюсы:

  • зрительские симпатии и растущая популярность
  • прост в освоении с нуля
  • мало зависимостей и хорошая производительность

Минусы:

  • молодой проект — высокие риски
  • меньше ресурсов, чем у альтернатив

Backbone.js

Backbone.js

Backbone.js был одним из первых клиентских фреймворков, реализующих модель MVC. Единственная зависимость — Underscore.js, созданный тем же разработчиком.

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

Плюсы:

  • компактный, легкий и простой в изучении
  • не добавляет дополнительной логики в HTML
  • прекрасная документация
  • использован в разработке многих приложений включая Trello, Wordpress, LinkedIn и Groupon

Минусы:

  • низкий уровень абстракции по сравнению с альтернативами (например, AngularJS)
  • требует дополнительных компонентов для реализации фич вроде связывания данных
  • более современные фреймворки отказались от модели MVC

Ember.js

Ember.js

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

Плюсы:

  • единое решение для клиентских приложений
  • позволяет разработчикам быть продуктивными (использует jQuery)
  • хорошая обратная совместимость
  • одобряется современными стандартами веб-разработки

Минусы:

  • большой дистрибутив
  • считается монолитным по сравнению с другими фреймворками, основывающимися на модульной модели
  • непрост в изучении

Knockout.js

Knockout.js

Старейший MVVM фреймворк, использующий обозреватели для отслеживания состояния интерфейса. Поддерживает шаблонизацию и отслеживание зависимостей.

Плюсы:

  • легковесный и не имеет зависимостей
  • прекрасная поддержка браузеров вплоть до IE6
  • хорошая документация

Минусы:

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

Примечание

Хотите больше?

  • Polymer — библиотека, обеспечивающая кроссбраузерную поддержку компонентов HTML5
  • Meteor — full-stack платформа для веб-приложений
  • Aurelia — относительно молодой легковесный кроссплатформенный фреймворк
  • Svelte — совсем новый проект, переводящий исходный код фреймворка в код JavaScript
  • Conditioner.js — новая библиотека, которая автоматически подключает и отключает модули в зависимости от состояния.

Инструменты

Менеджеры задач общего назначения

  • Gulp.js
  • npm
  • Grunt

Бандлеры

  • Webpack
  • Browserify
  • RequireJS

Линтеры

  • ESLint
  • JSHint
  • JSLint

Тестирование

  • Mocha
  • Jasmine
  • Qunit

Другие статьи по теме

Какой JavaScript фреймворк следует учить в 2018 году

Скрытые фичи JavaScript

МЕРОПРИЯТИЯ

МТС True Tech Day

17 мая Москва Онлайн Бесплатно

Usetech Mobile MeetUp (UMM) #1

06 мая Онлайн Бесплатно
+ Показать еще

Комментарии

ВАКАНСИИ

Добавить вакансию
Продуктовый аналитик
Екатеринбург, по итогам собеседования
Аналитик данных в команду HR-аналитики привлечения
Москва, по итогам собеседования
Senior Frontend разработчик
от 4000 USD до 8000 USD
+ Показать еще Опубликовать вакансию

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

Лайфхак: в какой последовательности изучать JavaScript

Огромный инструментарий JS и тонны материалов по нему. С чего начать? Расскажем, как изучать JavaScript, и предоставим полезные ссылки.

6 сервисов для работы с блок-схемами

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

16 бесплатных книг по JavaScript

Коллекция бесплатных электронных книг для тех, кто хочет изучить JavaScript. Книги предоставляются в различных цифровых форматах: PDF, EPUB, HTML и др.

代做工资流水公司深圳打印工资流水单车贷银行流水 价格宁波打消费贷流水金华转账银行流水图片邯郸入职流水代开烟台企业对私流水图片泰安代办签证流水青岛制作对公流水苏州制作企业贷流水大连薪资银行流水代做天津企业对公流水报价泰安转账银行流水制作绵阳个人银行流水代做柳州做车贷流水青岛查询银行流水账株洲工作收入证明办理黄冈办理公司流水湛江转账银行流水制作银行流水查询惠州代做流水洛阳对公流水报价海口企业贷流水代办荆州做个人银行流水深圳制作工资银行流水扬州打转账银行流水天津企业银行流水制作深圳企业银行流水费用太原查在职证明贵阳背调银行流水查询九江车贷银行流水 开具香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化