- PVSM.RU - https://www.pvsm.ru -

JavaScript-тренды, на которые стоит обратить внимание в 2017-м

image [1]

Я решил написать этот материал после того, как увидел твит Дэна Абрамова, за который хочу сказать ему огромное спасибо. Дэн задал своим подписчикам вопрос о самых интересных событиях в мире JavaScript, которые достойны внимания широкой общественности.

Любители JS на вопрос откликнулись, под твитом собралась целая гора ответов. Каждый говорил о том, на что, по его мнению, стоит обратить внимание в 2017-м году. В результате получилась весьма занимательная подборка, из которой я выбрал всё лучшее и добавил пояснения.

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

Вот технологии, отмеченные JavaScript-сообществом как наиболее перспективные. Я расположил их в порядке убывания популярности.

WebAssembly

Эх, с чего бы начать объяснять особенности технологии WebAssembly? Её сокращённое название, «wasm», выглядит почти как «asm», а это – намёк на то, что перед нами – нечто низкоуровневое. На самом деле – так оно и есть. Эта технология нацелена на упрощение разработки на любом языке (радуйтесь, любители функционального и реактивного программирования!) и компиляцию кода для веба.

Технология WebAssembly пришлась по душе многим. Дело в том, что уйма разработчиков всё ещё находится в весьма неоднозначных взаимоотношениях с JS, отдавая безусловное предпочтение другим языкам, код, написанный на которых, можно преобразовать в JavaScript. Ниже – масса подтверждений этой идеи.

В любом случае, JS движется вперёд семимильными шагами, и никто не ждёт, что это скоро прекратится.

WebAssembly – разработка сравнительно молодая. Сейчас она находится в фазе ознакомительной версии, до релиза ещё далеко. Таким образом, уверен, что за её развитием стоит понаблюдать, так как она способна очень серьёзно повлиять на будущее JS.

Подробности о WebAssembly можно почитать в материале [3] Эрика Эллиотта.

Elm

Множество разработчиков буквально влюбилось [4] в Elm в 2016-м. Это – доступный всем желающим язык функционального программирования.

Вот выдержки из «Введения в Elm [5]», раскрывающие основные особенности языка:

  • Нет ошибок времени выполнения, null, сообщений в духе «undefined is not a function».
  • Удобные сообщения об ошибках, которые помогают быстрее расширять программы.
  • Хорошо спроектированный код, который остаётся таковым по мере роста приложения.
  • Автоматический семантический контроль версий для всех пакетов Elm.

Elm – это отличные инструменты, скомбинированные с чистым, простым и компактным кодом.
Конечно, Elm компилируется в JS, что и привлекло к нему внимание JavaScript-разработчиков.

Vue.js

В прошлом году было очень интересно наблюдать за тем, как росла популярность Vue.js. Эта библиотека, несомненно, будет заметным игроком и в 2017-м.

Я, кстати, благодаря Эвану Ю, бесстрашному создателю Vue.js и лидеру сообщества, вдохновился [6] в прошлом году идеями Open Source.

Vue – это конкурент React, поэтому совершенно естественно то, что в 2017-м нас ждут бесконечные споры о том, что лучше: React, Vue, или Elm (вот здесь [7] народ уже обсуждает эту тему). В итоге всё решит то, какое сообщество предложит лучшую поддержку больших проектов. Полагаю, Эван Ю знает, что надо делать.

Недавно вышла версия Vue 2.0, она стала быстрее и меньше, что делает эту библиотеку ещё привлекательнее.

Кстати, вот пара ответов на вопрос о том, почему некоторые [8] компании [9] перешли на Vue.

Babili (babel-minify)

Babili вышел в августе 2016. Это – минификатор, умеющий работать с ES6+, основанный на инфраструктуре Babel.

Зачем ещё один минификатор?

Вот отличный рассказ [10] Генри Жу о причинах появления Babili. Полагаю, важно обратить внимание на следующую его часть: «Babili может принимать на вход конструкции ES2015+, в то время, как существующие минификаторы обычно ограничены ES5. Они требуют, чтобы код был транскомпилирован в поддерживаемый ими вариант языка перед минификацией. Это становится бесполезным, если учесть, что программисты уже создают рабочие проекты на ES2015. Babili, кроме того, гибок, и имеет модульную структуру (фактически, это набор предустановок [11] Babel, что означает поддержку плагинов), его можно использовать как пресет или как инструмент командной строки. Кроме того, Babili сможет выполнять оптимизации кода, специфичные для ES2015+».

OCaml

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

Если вы наблюдаете за возрождением функционального программирования, идущим последние несколько лет, вы могли слышать о Haskell. OCaml быстро становится популярнее, чем Haskell, преимущественно из-за того, что существует несколько отличных компиляторов из OCaml в JS.
Разработчики Facebook, например, являются большими фанатами OCaml, так как он помог им создать Hack [12], Flow [13] и Infer [14].

BuckleScript

BuckleScript [15] – это компилятор для OCaml, созданный командой разработчиков Bloomberg (да, это тот самый Bloomberg). Вот что об этом рассказывает Дуэйн Джонсон [16]: «BuckleScript [17], или, для краткости, bsc, это сравнительно новый JavaScript-компилятор для OCaml. Другими словами, вы можете использовать функциональный, типизированный язык OCaml для компиляции кода на нём в JavaScript. Замечательно здесь то, что код, производимый BuckleScript, вполне читаем (то есть, если вы знакомы с JS, код этот можно понять, его легче будет отлаживать), а также – то, что BuckleScript связан с экосистемой npm. В итоге вы получаете лучшее из двух миров: мощный, функциональный, типизированный язык, увязанный с замечательными современными библиотеками для веб-разработки».

ReasonML

Reason [18] – это язык, построенный на базе OCaml, обладающий невероятно дружелюбным синтаксисом, глубокой интеграцией редактора и отличными средствами сборки. Его создала та же команда из Facebook, которая приложила руку к React.

Вот [19] отличный краткий рассказ Шона Гроува о Reason.

PureScript

Очевидно, вы уже догадались, что PureScript – это ещё один строго типизированный эффективный язык программирования, который компилируется в JavaScript.

Он особенно популярен среди любителей Haskell. Можете считать его конкурентом Elm. Вот, что предлагает нам PureScript:

  • Отсутствие тяжёлой среды исполнения кода.
  • Применение стратегии строгих (а не ленивых) вычислений, похожей на применяемую в JavaScript.
  • Поддержка литерального способа описания объектов JavaScript
  • Система типов, которая, пожалуй, мощнее и удобнее, чем в Haskell.
  • Предельно простой интерфейс внешних функций, который облегчает взаимодействие с JS-библиотеками.

TypeScript

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

image

Вот [20] подробный рассказ Андерса Хейлсберга о TypeScript.

Webpack-blocks

Это – хороший способ конфигурирования Webpack. Пожалуй, главный аргумент в его пользу высказал Дэн Абрамов: «Очевидно, Webpack не собирается становиться высокоуровневым инструментом. Поэтому его конфигурирование имеет смысл отдать внешним средствам. Настройки должны быть представлены в виде хорошо спроектированных блоков, а не в форме копирования и вставки фрагментов текстов с параметрами».

Если вы пользуетесь Webpack, у вас есть хорошие шансы найти полезное применение webpack-blocks [22].

GraphQL

Такое ощущение, что GraphQL заменит REST, особенно в компаниях, которым приходится обрабатывать огромные объёмы данных. Вот пример [23], который поможет понять – почему это так. Главная мысль: GraphQL эффективен до предела. Полагаю, мы продолжим наблюдать за ростом GraphQL в 2017-м. А о том, заменит ли он REST, поговорим через год.

React Storybook

Это – среда разработки пользовательских интерфейсов для React / React Native. С её помощью можно визуализировать различные состояния компонентов интерфейса и работать над ними в интерактивном режиме.

Взгляните на эту картинку, и сразу поймёте, в чём тут дело.

image

React Storybook можно найти здесь [24].

jQuery 3.0

Прадедушка jQuery всё ещё с нами! Команда разработчиков выпустила [25] более компактную и быструю версию в июне 2016-го, но многие, увлечённые чем-то вроде освоения React, вероятно, об этом и не слышали.

Pixi.js

Если вы занимаетесь разработкой фантастически прекрасных 2D-интерфейсов или игр, использующих WebGL, Pixi.js станет для вас настоящей находкой. Взгляните на галерею проектов [26], сделанных с помощью этой библиотеки. Даже если ничего серьёзного вы создавать не планируете, взгляните на это прямо сейчас.

Preact

Preact.js [27] — быстрая альтернатива React размером всего 3 Кб с тем же самым ES6 API.

Inferno

Inferno [28] – альтернатива Preact. Это – быстрая библиотека, похожая на React, занимающая всего 8 Кб, предназначенная для создания высокопроизводительных пользовательских интерфейсов как на стороне клиента, так и на сервере. Она предоставляет разработчику больше встроенных дополнительных возможностей, чем Preact.

Rust

Rust [29] – ещё один быстрый язык, который, с помощью emscripten, компилируется в JavaScript. Пожалуй, такое разнообразие языков вполне однозначно указывает на то, как много разработчиков больше не хотят писать на JS.

Custom Elements v1

Технология Custom Elements (вместе с Shadow DOM) испытывала проблемы с адаптацией (преимущественно из-за сложности восприятия её концепций), но она вполне может продолжить развитие в 2017-м.

Основным направлением улучшений будет поддержка браузеров, которая, как можно видеть здесь [30], растёт. Я думаю, что это отличный способ дать больше возможностей разработчикам, в то же время сокращая объём кода.

Вот материалы Smashing Magazine [31] и Google [32], которые помогут разобраться с тем, как использовать Custom Elements.

WebRTC

Сложно поверить в то, что WebRTC [33] уже пять лет. Facebook, Slack, Snapchat и WhatsApp применяют его в своих системах. Рост популярности WebRTC неизбежен, им будут пользоваться всё больше и больше компаний, которые предлагают пользователям аудио- и видеосвязь.

Будем надеяться, что инновации со стороны команды проекта WebRTC принесут в него лишь улучшения.

Next.js

Next.js [34] – это маленький фреймворк, построенный на основе React, Webpack и Babel. Он упрощает создание и развёртывание React-приложений, сборка которых производится на серверной стороне.

Команда разработчиков [35] из ZEIT, которая этим проектом занимается, весьма активна в сообществе React. Полагаю, на Next.js стоит, по меньшей мере, обратить внимание.

Итоги

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

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

Автор: RUVDS.com

Источник [36]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/231454

Ссылки в тексте:

[1] Image: https://habrahabr.ru/company/ruvds/blog/319162/

[2] December 29, 2016: https://twitter.com/dan_abramov/status/814442120945790976

[3] материале: https://medium.com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6#.4wd8dn7ri

[4] влюбилось: https://hackernoon.com/why-elm-is-going-to-change-the-world-f5a6c693b2ca#.f752y3uln

[5] Введения в Elm: https://guide.elm-lang.org/

[6] вдохновился: https://medium.com/commit-push/want-to-become-a-better-developer-34c2444a6849#.qzemarbzw

[7] вот здесь: https://www.reddit.com/r/reactjs/comments/4xfm2n/react_vs_vuejs/

[8] некоторые: https://about.gitlab.com/2016/10/20/why-we-chose-vue/

[9] компании: http://pixeljets.com/blog/why-we-chose-vuejs-over-react

[10] отличный рассказ: https://babeljs.io/blog/2016/08/30/babili

[11] набор предустановок: http://babeljs.io/docs/plugins/#presets

[12] Hack: http://hacklang.org/

[13] Flow: https://flowtype.org/

[14] Infer: http://fbinfer.com/

[15] BuckleScript: https://github.com/bloomberg/bucklescript

[16] Дуэйн Джонсон: https://github.com/canadaduane

[17] BuckleScript: http://bloomberg.github.io/bucklescript/

[18] Reason: https://facebook.github.io/reason/

[19] Вот: https://youtu.be/QWfHrbSqnB0?t=29m34s

[20] Вот: https://channel9.msdn.com/posts/Anders-Hejlsberg-Introducing-TypeScript

[21] December 6, 2016: https://twitter.com/dan_abramov/status/806249934399881216

[22] webpack-blocks: https://github.com/andywer/webpack-blocks

[23] пример: https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.rttn26wqh

[24] здесь: https://getstorybook.io/

[25] выпустила: https://blog.jquery.com/2016/06/09/jquery-3-0-final-released/

[26] галерею проектов: http://www.pixijs.com/gallery

[27] Preact.js: https://preactjs.com/

[28] Inferno: https://github.com/infernojs/inferno

[29] Rust: https://www.rust-lang.org/en-US/

[30] здесь: http://jonrimmer.github.io/are-we-componentized-yet/

[31] Smashing Magazine: https://www.smashingmagazine.com/2014/03/introduction-to-custom-elements/

[32] Google: https://developers.google.com/web/fundamentals/getting-started/primers/customelements

[33] WebRTC: https://webrtc.org/

[34] Next.js: https://github.com/zeit/next.js

[35] Команда разработчиков: https://zeit.co/blog/next

[36] Источник: https://habrahabr.ru/post/319162/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best