https://habrahabr.ru/company/jugru/blog/328922/- Программирование
- JavaScript
- Блог компании JUG.ru Group
Учите язык, а не фреймворки. Если в 2012 году речь шла о пяти основных фреймворках, в 2016 говорили о десятке, то в этом году речь идет уже о пятнадцати (и это только для фронтэнда). Что это?! Хайп по фреймворкам… Всё это может привести к тому, что чистый JS джуны вообще знать не будут, а критерием зрелости будет знание метапрограммирования, моделей объектов и Vanilla JavaScript.
Итак, программа
HolyJS 2017 Piter практически завершена, будет много интересного. Давайте посмотрим в какие области JS вселенной можно попасть без «use strict»:
- ECMAScript 6 (ES6) и ES7 — практические особенности;
- Дофреймовые истоки и незаслуженно забытые функции;
- Серверный JS;
- Мордовый JS;
- Другое...
В названии одного из докладов упоминается «Алиса в Стране Чудес», и кэрроловские перемены восприятия вообще станут на конференции трендом: сразу несколько спикеров призывают посмотреть на привычные вещи по-новому. Даже само расписание конференции нестандартное — первый день будет разделен на два потока, второй же будет идти в три. Неочевидный профит первого варианта — меньше пропущенных материалов, больше общения со спикерами, есть время изредка выдохнуть от обилия поступающей информации, хотя последнего мы не обещаем. И да, мы изучаем обратную связь и работаем над собой и организацией конференции, а поэтому «вы просили, мы сделали».
Да пребудет с тобой сила!
Если Брендан Айк — это «мастер Йода (мастер Кода)» JS, то «Ол-би-ван Кеноби» в этом году с нами в лице
Дугласа Крокфорда (Douglas Crockford), — отца JSON. Вместе с ним будет много о ES6 и о том, как теперь жить с расширениям
*.mjs, позволяющим явно идентифицировать JavaScript-файлы, которые будут обрабатываться в том же BABEL как ES6 модули. (Раньше эти файлы с любовью называли «Майкл Джексон скрипт»). И это только начало.
Больше конкретики! У Дугласа будет два доклада. Первый — кейноут «
The Post JavaScript Apocalypse» — будет использовать силу для предсказания: «что будет после JavaScript»; какой язык займет его место; что нам делать до того с возможностями ES6, а также почему нужно подписываться на платный телеканал HBO.
Второй доклад «
Typing, Goto There and Back Again» будет выдержан в стиле «два шага вперед, три шага назад, или почему надо знать путь развития технологии». Разбираться будем с противоречиями в языковом дизайне, начиная с письма Дийкстры к редактору.
И да, как искренне любящий JS и находящий в нём хорошие стороны, Дуглас не будет церемониться. Для полноты картины я просто приведу переведенные цитаты из доклада Дугласа с
.concat() 2015: The Better Parts в стиле контраргументов к его же «сильным сторонам» из книги «JavaScript — сильные стороны»:
— Каждая функция является важным инструментом. Это неправда. Вы можете написать лучшие программы, не используя некоторые из этих функций. И если вы можете писать более качественные программы без них, то они не так уж важны.
— Я имею право использовать каждую функцию. Тема разговора изменилась. Неужели мы больше не говорим о том, как лучше всего писать программы. Мы сейчас говорим о наших правах? На этом аргументация, в конечном итоге, заканчивается. «Я имею право писать дерьмо», правда? Это не важно. Важно, что мы обязаны писать очень хорошо.
— Мне нужна свобода самовыражения или «я художник и я самовыражаюсь, ставя точку с запятой в начале оператора, а не в конце». Соображения те же.
Готовтесь к тому, что уроки силы и уроки танцев будут с Дугласом по полной программе.
Красиво кодить не запретишь
О прекрасном. Сделаем так, чтобы код не выглядел как JS Хатт (вы же уже поняли аналогию ;) А про красоту больше всех понимают женщины (это не сексизм!), и в коде тоже, что и докажет второй кейноутер предстоящей конференции «принцесса»
Lea Verou — автор книги «CSS Secrets» и один из экспертов CSS Working Group. Пока кто-то делит людей на «разработчиков-технарей» и «дизайнеров-гуманитариев», Лия известна своей любовью и к коду, и к дизайну, что она и реализовала на практике в нескольких open source проектах (
Prism,
Dabblet и
-prefix-free)
Не удивительно, что кейноут «
JS UX: Writing code for humans» как раз будет связан с этим пересечением: Лиа расскажет о том, как применение UX-подходов к программированию может сделать ваш код лучше. В конце концов, код, который кому-то надо читать (включая вас самих в будущем) — это тоже своего рода UI!
Дальше — больше. Почти 30 докладов и наш маленький гайд по основным из них.
JavaScript: настоящее и будущее
Jakob Mattson — Forgotten funky functions
В своем докладе Джакоб рассмотрит необычные стороны языка, незаслуженно забытые. В наше время готовых фреймворков и модульных систем, большая часть JS разработчиков тратит время, чтобы разобраться с этим инструментарием в ущерб изучению языка как такового — изменим это. Поговорим о высокоуровневых функциях, моделях объектов, мета-программировании. И, конечно, о любимой тематике Джакоба — библиотеках. На его счету уже 65 JS модулей для npm.
Claudia Hernández — Down the Rabbit Hole: JavaScript in Wonderland
NaN это Number, +!![] равно 1, Array.sort() может работать совсем не так, как вы ожидаете, и это далеко не все кейсы, ломающие мозг разработчику, согласны?
В элегантной женской манере, а может, и нет, Клаудия пройдется с нами по целой коллекции странностей JS и неожиданного поведения элементов. Данное путешествие призвано избавить от огромного количества головной боли в будущем, понять и полюбить язык более глубоко. А Клаудия знает толк в путешествиях, ведь однажды она уже пересекла Атлантику ради того, чтобы работать над проектами таких компаний, как Air France, EDF, Groupe SEB и Aéroport de Paris. Так что в путь, но аккуратно: это страна чудес, так что всё может поменяться в любой момент.
Инструменты и фреймворки
Imad Elyafi — Migrating Pinterest profiles to React
Написать новое приложение под React сравнительно просто, куда сложнее мигрировать работающий сервис, особенно если им пользуются миллионы человек и он постоянно находится в движении.
Имад — инженер команды WebCore в Pinterest. На данный момент он является драйвером процесса перехода на React, на чём и будет основан его доклад.
Практические челленджи перехода, подводные камни, миграция сервиса с миллионами подписчиков на борту. Он буквально заставит вас ощутить себя в роли человека, заменяющего двигатель на борту летящего на огромной высоте самолета. Частично это будет сделано через рассмотрение трудностей рендеринга JavaScript на сервере, измерений погрешностей, исправления всплывающих ошибок, взаимодействия через устаревшие библиотеки, и всё это одновременно с рендерингом компонентов React внутри рабочего JS Framework.
Сергей Юферев — Как прекратить войну фронтенд-фреймворков
Помните про «синтаксический сахар»? Пора избавляться.
В своем докладе Сергей расскажет о «прибитости гвоздями» кода приложения к фреймворкам. О том, как популярные библиотеки заставляют нас писать непереиспользуемый код, делать ненужный рефакторинг и копипаст. О том, как не точно выбранная стратегия в начале пути, влияет на будущее фронтенд-разработки в проекте.
Покажет попытки решить эти проблемы в reactive-di, реализации идей внедрения зависимостей (DI) и реактивного программирования. Как использовать reactive-di в роли своего рода докера для кода, контролирующего состояние приложения и комбинирующего в себе идеи mobx, mol, cellx, angular2 di.
Залим Башоров — Kotlin как язык для разработки фронтенда
В своем докладе Залим покажет один из путей развития JS в плане унификации с другими языками. А именно разговор будет про Kotlin, который изначально разрабатывался для JVM, но сегодня может компилироваться в JavaScript и не только.
В данном докладе будет рассказано про различные аспекты Kotlin JS:
* взаимодействие с кодом на JavaScript;
* какие есть отличия от Kotlin на JVM;
* как использовать один и тот же код для разных платформ.
Доклад будет содержать фичи в духе: nullability, extension function, Kotlin coroutines (привет async), призывание JS из Kotlin (и Kotlin из JS) и некоторые другие.
Валерий Сорокобатько — CSS in JS. Зачем и почему?
Глубокое погружение в CSS in JS с Валерием, а именно:
— Зачем нам нужен CSS in JS?
— Как это работает.
— Динамический CSS.
— Существующие решения и разница между ними.
— Какой подход используем мы и почему.
— CSS in JS-эксперименты: Browser extension и Service Worker для кеширования сгенерированного CSS.
— Примеры, много примеров.
Или кратко: Как выбрать библиотеку, реализующую CSS in JS, когда использовать такой подход вместо привычного CSS, как писать код лаконичнее и стройнее. Много примеров. Валерий (по его же словам)готов говорить вечно об архитектуре приложений и UX, так что не стесняйтесь с вопросами.
Алексей Иванов — Внутреннее устройство бандла webpack
Webpack стал де-факто стандартом для сборки крупных приложений на JS. Его используют почти все, но как правило как черный ящик – если положить вот сюда файлы и написать такие-то строки в конфиг, то потом на выходе автоматически получится бандл. И опыт с проектами для eBay, Яндекса и Communigate позволил понять как выглядит бандл изнутри, как разные настройки на него влияют, почему некоторые настройки привести к неожиданным сайдэффектами, а также как все это отладить и оптимизировать. Этим и будет делиться Алексей в своём докладе.
Алексей Золотых — ES2017 vs Typescript vs Dart. Сравниваем без эмоций
Перед разработчиками очень часто стоит непростая задача выбрать язык программирования для разработки клиентской части приложения. Как правило: выбор стоит между тремя китами: JavaScript, TypeScript и Dart. Легкий battle технологий без глубокого погружения. Алексей знает о чем говорит, за 10 лет JS-разработки он успел попробовать многое.
Подходы и паттерны
Patrick Stapfer — The Road to a Statically Typed Future
В своём докладе Патрик раскроет динамическую натуру JS через погружение при помощи внешних систем, а именно Flow и ReasonML. Отход от канонов будет сделан, чтобы показать пути оптимизации динамической реализации кода. Патрик — разработчик JS Runtastic в прошлом, ныне фрилансер, привнесший внушительный вклад в развитие
flowtype, поэтому весь доклад будет построен на личном опыте, с выкладками о том, зачем нужны определения типов и как типы будут влиять на API дизайн.
Anjana Vakil — Functional Programming in JS: What? Why? How?
Анджана посвятила свой доклад функциональному программированию на JS. Да, именно с использованием базовых JS фич и некоторых популярных FP библиотек, таких, как Mori и Ramdа. В свободное от выступлений время Anjana уже прошла путь от философии к преподаванию английского языка и от прикладной лингвистики к разработке ПО. Поэтому она сможет доходчиво дать ответы на вопросы: Как выглядит функциональный код и чем он лучше других? Как начать писать в стиле функционального программирования? Откуда такой ажиотаж, что это, как, а главное – зачем?
Алексей Богачук — Offline Second
Без фронтэнда никуда, но и без офлайна также. Существует множество рекомендаций, как начинать проекты, следуя принципу «Offline First».
Алексей Богачук — Фронтенд-тимлид/архитектор в компании EPAM и один из лидеров сообщества FrontSport в Минске, поэтому он знает о проблемах данного подхода не по наслышке. В своем докладе Алексей даст ответы на ряд вопросов, а именно: Как добавить поддержку offline-режима в приложениях, которые уже написаны? Какие тактики и архитектурные подходы применять, чтобы не возникло необходимости полностью переписывать приложение? Какие технологии и библиотеки использовать для этого? Какие хранилища подойдут для реализации pull/push стратегий?
Slobodan Stojanovic — 8 1/2 things about serverless (with Node.js)
«Главное в путешествиях по галактике — иметь своё полотенце.» Этого принципа в своём докладе и будет придерживаться Слободан. А именно — что же стоит за названием «бессерверного» решения и сколько серверов на самом деле требуется для такого решения. Всего 8 с половиной вопросов и станет ясно — как бессерверная архитектура поможет в разработке Node.js и в то же время уменьшит стоимость инфраструктуры и внедрения.
Владимир Гриненко — Зависимости в компонентном вебе, сделанные правильно
Модульные системы подразумевают, что все модули будут связываться между собой в единое целое, а модуль — это только один компонент, а все компоненты находятся в зависимости друг от друга, и их надо выражать.
Зависимости между компонентами тянут за собой множество проблем. Хардкодинг, сложность рефакторинга и прочие неприятности.
В своем докладе Владимир Гриненко, будучи руководителем группы общих компонентов интерфейсов в симферопольском офисе Яндекса, покажет способ, как избавиться если не от всех неприятностей, то от многих. В докладе будет рассказано, как применить новый подход на примере сборки на Gulp и Webpack. А также о пакете, который не только позволяет собирать таким образом проекты на React, но и обеспечивает множественное наследование для React-компонентов.
Илья Климов — «Строгий» JavaScript: типы против реальности
Строгая типизация: серебряная пуля или маркетинговый ход? Этот доклад — история о том, как небольшая компания год писала «типизированный JS» и что из этого вышло. Личный опыт войны с типизацией, какие проблемы возникли на пути «перехода», какую ценность (и с позиции разработки, и с позиции бизнеса) это принесло, и когда стоит об этом беспокоиться.
Это и многое другое на основании 12-летнего опыта Ильи в JS во всех его проявлениях: от микроконтроллеров до облачного рендеринга видео.
Доклад концентрируется вокруг FlowType и его экосистемы и немного затрагивает TypeScript, а также сообщество «типизаторов» и типизацию в целом.
Георгий Буханов — React Loadable: Code Splitting with Server Side Rendering
Итак, у вас есть достаточно массивное приложение, один общий контейнер со всем вашим кодом и большая проблема с доставкой до пользователя, без потери производительности. Что делать в этом случае Георгий расскажет в своём докладе, а именно: как решить многие проблемы сборки и разборки кода на удобоваримые куски, где и как хранить полученные куски кода для асинхронной сборки, о решении трудностей коммуникации клиент-сервер, организации рендеринга приложения на стороне сервера и осуществлении универсальной выборки данных. Доклад будет построен на примере библиотеки React Loadable, а для полного понимания понадобятся знания из области React, Babel (ES6), Node, Webpack 2, Redux и немного из React Router v4.
Производительность и немного хардкора
Тимофей Чаптыков — Ускоряем серверный рендеринг React-приложений
В докладе Тимофея речь пойдет о небольшом исследовании, с помощью которого в ВКонтакте определяли, может ли эта соцсеть позволить себе использовать Virtual DOM для отдельных элементов на сайте. Тимофей осветит проблемы, которые необходимо решить на этом пути и расскажет про серверный рендеринг ВКонтакте, строковые шаблонизаторы и написание парсеров в ходе проекта. Инсайдерский взгляд от разработчика одной из самых больших социальных сетей.
Martin Splitt — Rendering performance from the ground up
Веб-разработчик должен заботиться о производительности. К сожалению, большинство разговоров о веб-быстродействии начинаются где-то на уровне отрендеренного сайта и DOM и заканчиваются утверждениями, наподобие «...and it's fast because it's accelerated».
Мартин — пропагандист открытого кода и веб-евангелист в сердце. При разнообразии рабочих задач в Archilogic на полях фронт- и бэкэнда, он посвятил свой доклад проблематике веб-производительности.
Доклад от Мартина — это перфоманс по ступеням, а именно: как разметка превращается в пиксели, как они собираются в целую страницу и чем мы можем помочь платформе в ускорении наших сайтов.
Дмитрий Шуранов — Цена пропущенного фрейма
Снова говорим об анимации. Что заставляет браузер пропускать фреймы? Такие понятия, как отрисовка на GPU, композиция слоёв, анимация transform/opacity, давно известны и привычны. В докладе Дмитрия мы взглянем глубже на них, поговорим о том, к чему приводят пропущенные фреймы, как сгладить анимацию технически и визуально, какие есть инструменты разработки и отладки анимаций, а также о подходах и приёмах для достижения плавности.
Игорь Алексеенко — Кошелёк или деньги: сложный выбор между памятью и процессором
Подробный разбор на примерах, в каких случаях при разработке интерфейсов нужно делать ставку на кеширование, а в каких можно довериться процессору. Руководить полетом будет Игорь Алексеенко — JS-разработчик с опытом более 8 лет, который работал в Студии Лебедева, Островке, JetBrains.
Доклад рассчитан на Разработчиков, которые проектируют большие приложения, в которых важна скорость взаимодействия и с практическими выкладками показывает правильные пути выбора.
Кое-что еще...
George Mandis — Make More Than Music with Tiny Computers, JavaScript and MIDI
Забудьте всё, что вы знали о MIDI… ну или почти всё.
Джордж не будет напоминать нам что этот протокол был создан ещё в 80-х для общения с музыкальными инструментами. Теперь доклад будет о современном «карманном» инструментарии.
Возможности современных миниатюрных ПК в сочетании с JS и MIDI позволяют взаимодействовать практически с любым устройством, независимо от времени его выхода (окей, начиная с 1983 года, как минимум). Джордж покажет, как использовать этот стэк, с чего начинать и как использовать его не только для экспериментов, но и для обучения.
Денис Радин — Переносим существующее web-приложение в виртуальную реальность
Виртуальная реальность набирает обороты и интеграция web-приложений в мир виртуальной реальности это не только новый UX для пользователя, но и доза хорошего фана для разработчика.
И Денис в своём докладе ответит на вопросы: «Должны ли мы использовать CSS или WebGL для проброса приложения в VR? Какие решения доступны на текущий момент и каких ошибок стоит остерегаться? Почему HTML так же хорош для разработки VR интерфейсов, как и для обычного, плоского Web? Как веб-разработчик может быть частью VR-революции?».
Станьте частью VR революции вместе с Денисом Радиным.
Алексей Носов — Демонстрация экрана в действии
Алексей выступит с рассказом о том, как «просто» реализовать демонстрацию экрана web-пользователя оператору колл-центра в реальном времени. Естественно, с мутациями интерфейса, с необходимостью маскирования sensitive-полей (смс-коды, номера карт), с описанием ситуации, когда размер пересылаемого трафика оказался слишком велик и потребовал оптимизаций во всех частях приложения. И другими «простыми» штуками.
И будет про использование Rx.Dom.fromMutationObserver для сбора данных о мутациях интерфейса и о Rx.HistoricalScheduler для функционального тестирования message-based — систем.
Фух, пока всё. Точная карта докладов есть на
сайте конференции с раскладкой по трекам. Билеты на «крейсер» с Дугласом и Лией пока пока что в умеренной ценовой категории,
покупать тут.
P.S. Программа готова полностью, но никто не отменяет форс-мажора. Хотя мы всегда надеемся на лучшее.