JavaScript существует уже более 20 лет, и это один из тех языков, который не перестает развиваться. Язык переживал быстрый рост в последнее время, что заставляет задуматься, будут ли современные интерфейсные технологии JavaScript, которые хорошо известны сегодня, актуальны через пару лет.
Тем не менее, важно играть на опережение, работая с новейшими инструментами и фреймворками для улучшения процесса разработки. В этой статье рассматриваются различные библиотеки JavaScript, фреймворки и инструменты, которые вам следует рассмотреть для изучения прямо сейчас.
Введение
Среда JavaScript стала просто огромной. Она имеет собственную экосистему библиотек, фреймворков, инструментов, менеджеров пакетов и новых языков, которые компилируются до JavaScript. Интересно, что NPM, который является де-факто менеджером пакетов для JavaScript, также является крупнейшим в мире реестром программного обеспечения. Вот выдержка из публикации, опубликованной на Linux.com еще в январе 2017 года.
С более чем 350 000 пакетами, реестр NPM содержит более чем вдвое пакетов по сравнению с другими наиболее популярными реестрами пакетов (одним их которых является хранилище Apache Maven). Фактически, в настоящее время это самый крупный реестр пакетов в мире.
Теперь давайте промотаем время вперед на восемь месяцев, и в настоящее время в реестре NPM имеется около 500 000 пакетов. Это огромный рост по сравнению с другими хранилищами пакетов.
Будучи фронт-энд разработчиком на JavaScript, важно не отставать от современных инструментов и библиотек JavaScript. Когда технология становится популярной, спрос на нее высок, что, в свою очередь, означает больше заданий по кодированию, за которые платят самую высокую стоимость в отрасли. Поэтому мы собрали список популярных технологий JavaScript, которые, как мы думаем, вам следует знать.
Библиотеки
Библиотека является многоразовой частью кода, которая предлагает определенные функции. Это набор функций, объектов и классов, которые вы можете использовать в своем приложении. Библиотека абстрагирует различные слои, так что вам не нужно беспокоиться об их деталях реализации.
Вы можете вызвать библиотечную функцию и передать ей некоторые параметры, библиотека выполнит ее и вернет вам управление назад. Однако она не накладывает никаких структурных ограничений, сужающих использование библиотеки. Популярные библиотеки JavaScript включают:
React — это библиотека JavaScript, созданная разработчиками Facebook и Instagram. React была признана самой любимой технологией среди разработчиков, согласно опросу Stack Overflow Survey 2017. React также является самым популярным проектом JavaScript, основываясь на подсчете звезд GitHub.
Так почему React привлекает столько внимания? С помощью React можно создать интерактивный интерфейс с использованием декларативного подхода, в котором вы можете контролировать состояние приложения, говоря «картинка должна выглядеть так». Он использует компонентную модель, в которой компоненты являются многократно используемыми элементами пользовательского интерфейса, и каждый компонент имеет свое собственное состояние.
React использует виртуальный DOM, так что вам не нужно беспокоиться о прямом его манипулировании. Другие примечательные особенности React включают в себя односторонний поток данных, дополнительный синтаксис JSX и инструмент командной строки для создания проекта React с нулевой конфигурацией сборки.
jQuery — это библиотека, которая сделала JavaScript более доступным, а манипуляции с DOM проще, чем раньше. Мягкая кривая обучения jQuery и простой синтаксис породили поколение новых клиентских разработчиков. Несколько лет назад jQuery считался надежным решением для создания мощных веб-сайтов с кросс-браузерной поддержкой. Основные функции jQuery, такие как манипулирование DOM на основе селекторов CSS, обработка событий и создание вызовов AJAX, подпитывали ее популярность.
Однако все изменилось, и среда JavaScript постоянно развивается. Некоторые функции jQuery были включены в новую спецификацию ECMAScript. Более того, новые библиотеки и фреймворки, используемые сегодня, имеют собственный способ связывания DOM, и поэтому простые методы манипуляции с DOM больше не требуются. Популярность jQuery находится на спаде, но я не думаю, что он исчезнет в ближайшее время.
D3 (или D3.js) — мощная библиотека JavaScript для создания интерактивных визуализаций с использованием веб-стандартов, таких как SVG, HTML и CSS. В отличие от других библиотек визуализации, D3 предлагает лучший контроль над окончательным визуальным результатом.
D3 работает, связывая данные с DOM и затем преобразуя их в документ. Он также имеет собственную экосистему, которая состоит из плагинов и библиотек, которые расширяют ее базовые функциональные возможности. Библиотека существует с 2011 года, и в ней есть множество документации и учебников, которые помогут вам начать работу.
Если вы хотите создать простые визуализации, не вкладывая слишком много времени в них, вы должны проверить Chart.js.
Фреймворки
Фреймворк имеет архитектуру, которая диктует поток управления в вашем приложении. Он описывает основу и рассказывает вам, как все должно быть организовано. Вам также предоставляются основные функции, необходимые для запуска и работы приложения. Кроме того, вы обязаны следовать принципам и шаблонам фреймворка. Разница между фреймворком и библиотекой заключается в том, что вы вызываете библиотеку, тогда как фреймворк вызывает вас.
Он часто включает в себя множество библиотек и имеет более высокий уровень абстракции. Функциональность, такая как обработка событий, создание вызовов AJAX, привязка шаблонов и данных и тестирование, встроены во фреймворк.
AngularJS когда-то была самой популярной технологией JavaScript среди разработчиков интерфейсов. Она был поддержана Google и сообществом частных лиц и корпораций. Несмотря на популярность, у AngularJS была своя доля недостатков. Команда провела два года работы над новой версией Angular, которая была, наконец, выпущена в сентябре 2016 года.
Выпуск Angular 2 был переделкой AngularJS. Некоторые из функций Angular 2 включают:
- TypeScript поверх JavaScript как язык по умолчанию
- компонентная архитектура
- улучшенная производительность как на мобильных, так и на веб-платформах
- лучшие инструменты и варианты скаффолдинга
Тем не менее, модернизация от Angular 1.x до Angular 2 является дорогостоящей, потому что Angular 2 — совершенно другой зверь. Это одна из причин, почему у Angular 2 не было такой же скорости принятия, как у ее предшественника. Но Angular и AngularJS по-прежнему относятся к числу наиболее часто используемых технологий в соответствии с Stack Overflow (2017). Проект имеет около 28 000 звезд в GitHub.
Vue.js — это легкая инфраструктура JavaScript, которая в этом году была в тренде. Это самый популярный фреймворк JavaScript на GitHub с точки зрения звезд GitHub. Синтаксис шаблона на основе HTML связывает предоставленный DOM с данными экземпляра.
Фреймворк предлагает опыт, похожий на React, с его виртуальными DOM и компонентами многократного использования, которые можно использовать для создания как виджетов, так и целых веб-приложений. Кроме того, вы также можете использовать синтаксис JSX для непосредственного написания функций рендеринга. Когда состояние изменяется, Vue.js использует систему реактивности, чтобы определить, что изменилось и перераспределяет минимальное количество компонентов. Vue.js также поддерживает интеграцию других библиотек во фремворк без особых хлопот.
Ember.js является интерфейсом на основе шаблона Model-View-ViewModel (MVVM). Он следует за стандартным подходом к настройке, который популярен среди сторонних фреймворков, таких как Ruby on Rails и Laravel. Ember.js включает в себя общие идиомы и лучшие практики фреймворков, чтобы вы могли создать приложение без особых усилий.
Стек Ember обычно включает:
- Ember CLI: предоставляет основные варианты скаффолдинга и поддерживает сотни надстроек.
- Ember Data: библиотека сохранения данных, которая может быть настроена для работы с любым сервером.
- Ember Inspector: расширение доступно для Chrome и Firefox.
- Liquid Fire: дополнение для переходов и анимации.
Инструменты
Инструмент представляет собой набор подпрограмм, которые помогут вам в процессе разработки. В отличие от библиотеки, инструмент обычно выполняет задачу на клиентском коде. Он берет ваш код в качестве входных данных, выполняет на нем задачу, а затем возвращает результат. Обычно используемые инструменты включают в себя транспиляторы и инструменты для сборки, активаторы, модули и инструменты для скаффолдинга.
Инструменты: универсальные исполнители задач
Универсальные исполнители задачи — это инструменты, используемые для автоматизации определенных повторяющихся задач. В число популярных исполнителей задач входят:
Gulp — это инструментарий JavaScript, который используется как исполнитель задач и как система сборки в веб-разработке. Компиляция, минимизация кода, оптимизация изображения, модульное тестирование, листинг и т.д. — это повторяющиеся задачи, которые должны быть автоматизированы. Gulp упрощает процесс написания задач даже для людей, которые менее знакомы с JavaScript.
Gulp использует конвейеры для потоковой передачи данных из одного плагина в другой, и конечный результат выводится в папку назначения. Gulp работает лучше по сравнению с Grunt, потому что он не создает временные файлы для хранения промежуточных результатов, что приводит к меньшему количеству вызовов ввода-вывода.
Grunt — это исполнитель задач и инструмент автоматизации JavaScript. Grunt имеет интерфейс командной строки, который позволяет запускать настраиваемые задачи, определенные в файле, называемом Gruntfile. У Grunt есть тысячи плагинов на выбор, которые должны охватывать большинство обычных повторяющихся задач, с которыми вы столкнулись. С помощью Grunt вы можете запускать все задачи под одной командой, что упрощает вашу жизнь.
Gulp и Grunt требуют, чтобы вы потратили время на изучение и освоение нового инструмента, что займет у вас так же время. Ввода дополнительных зависимостей в ваш проект можно избежать, выбирая альтернативу, которая уже связана с Node.js. Хотя npm больше известен как менеджер пакетов, сценарии npm можно использовать для выполнения основной части вышеупомянутых задач.
Инструменты: тестирование
Тестирование — это процесс утверждения и проверки того, что приложение соответствует ожидаемым бизнес-требованиям и техническим требованиям. Подход, основанный на испытаниях, также помогает обнаруживать ошибки и, следовательно, следует рассматривать как неотъемлемую часть современного интерфейса разработки.
Jest — это относительно новая платформа тестирования, созданная Facebook и хорошо принятая сообществом React. Существует распространенное заблуждение, что Jest специально разработан для работы с React; однако, согласно документации Jest:
Несмотря на то, что Jest можно рассматривать как тест, специфичный для React, на самом деле это универсальная платформа тестирования, способная адаптироваться к любой библиотеке или фреймворку JavaScript. Вы можете использовать Jest для проверки кода JavaScript.
Самое большое преимущество использования Jest перед другими наборами тестов заключается в том, что вам требуется нулевая или минимальная конфигурация для начала написания тестов. Фреймворк имеет встроенную библиотеку утверждений и поддерживает использование макетных функций или шпионов.
Jest имеет функцию под названием «snapshot testing», которая позволяет гарантировать, что пользовательский интерфейс приложения не изменится неожиданно. Разработчики из Facebook и другие участники вложили много работы в этот проект, поэтому не удивительно, что Jest окажется самой популярной платформой для тестирования JavaScript в ближайшие годы.
Mocha — это платформа тестирования JavaScript, которая имеет поддержку браузера, поддержку асинхронного обслуживания, включая перспективы, отчеты об охвате тестирования и JavaScript API для запуска тестов. Mocha часто соединяется с библиотекой утверждений, такой как Chai, should.js, expect.js, потому что у нее нет собственной библиотеки утверждений.
Jasmine — это ориентированный на поведение фреймворк JavaScript. Жасмин стремится стать браузером, платформой и независимым от фреймворка набором тестов. У Jasmine есть своя собственная библиотека утверждений, называемая matchers, которая дает инструменту чистый и легко читаемый синтаксис. Jasmine не имеет встроенного тестового исполнителя, и вам, возможно, придется использовать общий тестовый исполнитель, например, Karma.
В заключении
JavaScript остался актуальным со времен его создания еще в 1995 году. Вероятно, он останется таким же, пока браузеры не решат отказаться от него ради другого языка. Несмотря на то, что существует множество других языков, которые компилируются с использованием JavaScript, нет другого языка сценариев, который заменит JavaScript в обозримом будущем. Почему? Потому что JavaScript стал слишком популярным, чтобы его можно было заменить.
Язык не лишен кривых обучения, и есть множество фреймворков и библиотек, которые помогут вам заняться его изучением. Если вы ищете дополнительные ресурсы для изучения или использования языка в своей работе, то в Интернете вы сможете найти массу полезных ресурсов на эту тему.
Среда JavaScript определенно развивается, что видно из текущих тенденций в веб-разработке. Старые библиотеки и фреймворки были заменены новыми технологиями. jQuery, которая когда-то была наиболее популярной библиотекой JavaScript, испытывает некоторый спад с точки зрения привлекательности, использования и популярности. Новое поколение интерфейсных библиотек, фреймворков и инструментов набирает силу и получает всеобщее признание.
Привыкание к новым тенденциям в технологии также имеет свои преимущества. Работы по кодированию, требующие знание React, имеют одни из самых высоких зарплат в данной отрасли. Поэтому вам нужно продолжить обучение и экспериментировать с новейшими инструментами и фреймворками, чтобы максимально использовать JavaScript.
2 комментария
Про WebPack ни слова как и про ES, Babel, BrowserSync и прочих стандартов 2017 года
Read more on habr.
Угу, в то время, как сама спецификация всё ещё не поддерживается по умолчанию половиной выпускаемых устройств по данным на 2018. Частично функциональность отключена и в Firefox for desktop (ES6 Modules), и, разумеется, не полностью поддерживается в MS Edge (ES6 Promises).
Между тем, «отвязать» существующий проект от jQuery в пользу т.н. «Vanilla JS» действительно существенно проще, чем от фреймворка.
Следует учитывать, что продукт, созданный на фреймворке, навсегда останется привязан к этому фреймворку.
Могу отозваться только положительно. Впрочем, это не означает, что библиотеку можно использовать не по назначению.
Не всем по пути с сообществом.
Бытует мнение, что сообщество многое принимает на веру, а местами откровенно слепо.
Не все считают Webpack+Babel стандартом. Далеко ли позапрошлый год, когда к «стандартам» причисляли RequireJS, СommonJS и AMD? Что-то поменялось, правда? ;)
Все эти статьи от уважаемых индусских авторов безусловно заслуживают внимания. Главное, чтобы не чрезмерного.