четверг, 29 декабря 2016 г.

JavaScript в 2016



2016 был монументальным, причудливым и немного тожественным в зависимости от того под каким углом посмотреть на происходящее. Если сконцентрироваться на JavaScript, то много заметить что чегото глобального не происходило, но год таже был полон различных событий.  
Количество пользователей JavaScript продолжает стремительно расти. Не все любят этот язык, но вы редко слышали иронические замечания десять лет тому назад. Лично я всегда любил JavaScript – даже в самые ранние годы. Те люди которые до знакомства с ним использовали C++, Java или PHP могли быть слегка удивлены поналау: JavaScript был похожим, но совершенно другим. Преодолейте ваши предположения и вы по достоинству оцените егоу простую элегантность, практичность и гибкость. (Тем не менее обработка данных по прежнему остается кошмаром!)

В мае JavaScript отметил свой 21 первый юбилей, поэтому давайте посмотрим назад в первый год его взрослой жизни...

Эволюция ECMAScript

ES6/2015 был наиболее значимым обновлением языка со времен его появления. Для создания спецификации потребовалось 7 лет, но браузеры и прочие окружения наконец получили поддержку функции стрелок, let, const, прокси и прочие вкусности. Таблица совместимости ES6 все больше и больше становится зеленой.
Но пожалуй еще немного рановато для полного перехода на ES6  если вам требуется поддержка более старых версий браузеров. Под более старыми я имею ввиду браузеры, которым больше года. Вы можете использовать компилятор ES6-to-ES5 например Babel, но разработка и без того непростая, что бы ее усложнять еще одним сомнительным шагом.
ES7/2016 это скорее эволюция чем революция. Одна замечательная особенность – это async, которая позволяет выполнять код асинхронно, несмотря на то что он написан с обычной (синхронной) нотации безо всяких синтаксических вкраплений методов возврата или Promises (что продолжает меня удивлять).


Прогрессивные Веб приложения


 Первое место в 2016 году я присуждаю технологии постренной на JavaScript Прогрессивные Веб Приложения. ПВП были представлены на Саммите Google разработчиков Chrome 2015, но стабильной технология и средства стали только в Chrome 52 в Июле 2016. ПВП позволяют использоваться изначально-оффлайн функциональность и избавляют от необходимости использования методов AppCache. Веб приложения могут посоперничать с нативными приложениями и предоставляют следующие преимущества:
·         иконка домашнего экрана
·         быстрый запуск и настраиваемый сплеш-скрин
·         быстрое выполнение
·         оффлайн функциональность без интернета
·         URL, ссылки и закладки
·         Полноэкранный режим и поддержка тем
·         Выполнение в песочнице
·         Локальное и/или облачное хранение с синхронизацией
·         Меньшее использование устройств и ресурсов для выполнения
·         Лучшая безопасность (с использванием HTTPS)
·         Легкое обнаружение с помощью поисковой системы
·         Возможность попробовать до установки
·         Простая установка(это просто веб приложение)
·         Нет AppStore – содержимое контролируете только вы без необходимости отдава 30% своего дохода.
Лучше всего: любое приложение или вебсайт может быть преобразован в ПВП за несколько часов. Шаги:
1.      Разрешите HTTPS на вашем сервере
2.      Создайте манифест приложенияJSON файл в вашем приложении, который содержит информацию о названии цвете иконке и настройках отображения.
3.      Создайте сервисный процессJavaScript файл в корне вашего приложения который будет обрабатывать сетевый запросы и возвращать кешированные или живые данные по требованию.
Раньше было мало примеров, но ПВП предлагаем замечательные возможности мобильности вашего веб приложения. Правда нет никакой гарантии что Apple будет поддерживать технологию, но это не должно стать проблемой: ваше приложение будет по прежнему работать в safari – там просто не будет поддержки оффлайн режима. Я чувствую что Apple не останется в стороне, когда данная технология станет преимуществом Android.
Для дополнительной информации посмотрите Прогрессивные веб приложения для разработчиков Opera: полная коллекция ресурсов и Гид по ПВП Google.


Фиксация фреймворков



Трудно сделать объективную оценку, но кажется что React получил много внимания в этом году. Вы вправе несогласится: все зависит от того что вы используете, что смотрите и с кем разговариваете.
View.js набрал большую популярность и версия 2.0. была выпущена в сентябре.
Angular.js похоже несколько растерял своего монументального роста в 2015, но это может изменить недавни релиз Angular 2 в сентябре. Новая версия было переписана заново и она несовмтестима с 1.0.
Новые фреймворки и библиотеки замечательны, но десятилетний JQuery по прежнему на коне. Третья версия увидела свет в июне а в следующем месяце появилась верси я 3.1. Библиотека сейчас выполняется в strict режиме, поддерживает Promises и содержит большое количество исправлений (смотрите гид по обновлению для получения дополнительной информации).
JQuery используется в 96.4% всех сайтов которые используют JavaScript. По сравнению с Angular – самым используемым современным фреймворков – 0.5%. jQuery 1.x по прежнему популярна, у нее 93.5% установок. Версия 2.х – 6% версия 3.х – 0.5%.
Я был критичен к разработчиков, которые используют jQuery в каждом проекте. Иногда это избыточно и порой достаточно простого JavaScript. Тем не менее фреймворк делат процесс обучения быстрее и делает код гибче. Для какого-нибудь другого фреймворка потребуются годы что бы свергнуть jQuery с вершины.


API нарушений



Ах, API для статуса батареи. Это было так полезно когда я писал об этом в 2013; что может быть лучше чем минимизировать запросы по сети и обрабатывать ситуцации когда батарея в телефоне заканчивается.
К сожалению, Mozilla оценила порядка 6% сайтов которые использует подобное API, в большинстве подобных случаев код использовался для навигации в другие домены при должном статусе батареи. Были случаи также завышения цены, так как рекламодатели знали что пользователь не сможет тратить много времени...
В то же время это не проблема JavaScript или API, Mozilla убрала данный API с Firefox 53 по причинам безопасности. Непохоже что что-то подобное появится в iOS устройствах, в том числе похожие API например датчик приближения или Bluetooth. Это позор: API имеют практическую пользу, и я надеюсь что вопросы безопасности смогут быть решены в последующих версиях.

Новые Ноды



Дважды в год Node.js обновилась до версии 6.0 в апреле и версии 7.0 в октябре.
Платформа по прежнуму на подъеме, хотя отчет W3Tech говорит только о 0.2% использования на серверах в отличие от 82,3% PHP. Это цифры могут не отражать реальной картины в полной мере, так как Node.js не обязательно идентифицирует себя даже когда установлен.
Также отсутствие серверной части для PHP это также бонус: был долгий старт и он по прежнему остается наиболее практичным вариантом для хостов. Тем не менее, Node.js идет своей дорогой и широко используется разработчиками на различных языках.


Пряжа от Yarn



Мне нравится npm, и я считаю его одной из главной причин взрыва популярности средств Node.js. Хотя у меня никогда не было столько проблем, но я никогда не работал на таких масштабируемых проектах как Facebook.
Yarn выпустили в октябре. Этот новый менеджер пакетов для Node.js призван быть  быстрее и стабильнее чем npm. Он построен на реестре npm и по идее имеет полную совместимость.
Тим Северин написал статью которая раскрывает отличия этих менеджеров и преимущества Yarn. Я согласен с этим заключением:
Хотя Yarn и не вилка, он улучшает некоторые недостатки npm. Но не было бы хуже если бы команда npm не спросила у своих пользователей о недостатках и не исправила бы их в рамках npm вместо создания нового продкута?


Устали от усталости



Приз за статью в категории “Я не могу больше это использвоать в 2016” уходит Хосе Агвинига за “Какие чувтсва при изучении JavaScript в 2016 году”, второе место dayssincelastjavascriptframework.com.
Они пробую добавить юмора но на самом деле становится все труднее идти в ногу с развитием JavaScript и сопутствующих фреймворков и рекомендаций. Разработчики просто не знают куда смотреть, когда возникает необходимость выбрать правильно решение.
Мой совет: не пытайтесь за всем этим угнаться. Это невозможно. Что бы вы не использовали сегодня – завтра найдется решение на голову круче. Выберите вариант для вашего проекта и придерживайтесь его пока это вас устаивает.
Есть только увереность в одном: JavaScript. Изучите язык для начала и стройте на этом свои знания. Ваш опыт поможет вам понять, как каждая их структур работает и это поможет вам сделать правильный выбор. И он может быть за рамками все описанных выше фреймворков.

Источник: https://www.sitepoint.com/javascript-2016-in-review/