Page Nav

HIDE
HIDE
GRID_STYLE

Gradient Skin

Gradient_Skin

Сказ о том, почему YouTube тормозит, а Qweeto still coming

Есть одна такая страшная штука, называется браузер. Он построен на Open Web Platform (OWP). Все это мракобесие крутится под еще более страшн...

Есть одна такая страшная штука, называется браузер. Он построен на Open Web Platform (OWP). Все это мракобесие крутится под еще более страшным монстром - JavaScript. 

Чтобы жизнь фронтэндщика не казалась медом с jQuery и тысяч написанных плагинов под него, с 2012 года активно продвигаются сложные фреймворки, сначала MVC, потом MVVM. В какой-то момент их создатели окончательно тронулись и решили бежать быстрее паровоза, а именно, внедрять в свои фреймворки технологии, которые еще не работали в браузерах. Так появился, например, Babel. Но им этого было недостаточно, и по мановению одного пуш коммита в мастер ветку укатился README.md того, что пора бы все делать через JS, а остальные части OWP (HTML, CSS и пр.) можно делать или на крайняк эмулировать через него. Так раздулся npm и продолжает раздуваться дальше. В какой-то момент количество полифилов перевалило достаточный порог, чтобы все нормальные люди поняли, что что-то идет не так, и в этот момент мир фронтэнда разделился на два непримиримых лагеря: сатанинских задротов, кто говорил что все Ок и это будущее и тех, кто предлагал попридержать коней и оглядеть вокруг. К слову, ваш покорных слуга, оказался из числа вторых, и окружающая его сатана насмехалась своим зловещим смехом, собирая очередной React Create App по полчаса. В это время, ребзя из гугла решила что они могут все и чихали на все стандарты и заручившись поддержкой всего Chrome/ium сообщества выкатили кучу новых спек с custom elements, shadow dom, html import. Все это безобразие привести к продакшн виду поручили ребзе из Polymer. Спустя годы пыхтения и давления на W3C, им все же удалось получить более-менее работающую версию своих черновых API и под громкие возгласы писающих кровью реактивистов, YouTube переехал на Material Design на новом фрейморке. Вот только Polymer, который выводил множество package модулей на плечи браузерного API, нуждался в небольших, но хорошо написанных тулзовинах, которые бородатые хипсторята осилили написать лишь спустя долгие месяцы после релиза Polymer 1. Так появился Polymer CLI. Далее случилось невообразимое. Гугл оказался не таким всесильным, и такая часть API как html import была отвергнута хацкерами из mozilla, а вместе с этим была переделана спека по web components. Таким образом обиженным гуглятам пришлось переделывать свою версию и они впопыхах выкатили Polymer 2, который имел небольшие, но очень опасные исправления, которые исправлять ручками копошась внутри Chrome и YouTube в принципе, не могло принести должного Value. Вот так и подумали наши гордые орлы, что сражаться с React/Vue/Angular предлагая свои говноинструменты как-то не труъ и видимо под предлогом увольнения, выкатили нечто, которое назвали Polymer 3 с LitElement.

LitElement это, если будет понятнее, эдакий jsx на минималках, только построенный на строковых шаблонах ES6. Вместо двустороннего биндинга тут юзается односторонний и поэтому появляется легкая возможность подключения всяких Redux'ов. Таким образом, в 2к18 взяв поиграться с pwa-starter-kit, я был радостно удивлен возможностям, которые мне позволял новый фреймворк. Здесь даже webpack необязателен! Стоит ли говорить, насколько быстро происходит разработка, когда все фичи, которые тот же React делает с помощью трехколесных велосипедах с тонной сборщиков здесь делается нативно? Но, как и в любой истории, в какой-то момент идиллия начала рушиться, стоило было сделать шаг влево-вправо. К тому, что WebStorm будет по-своему делать (читай: кривые) отступы в LitElement еще ладно. Но когда всеми любимый EsLint начинает ругаться на то, что ты делаешь асинхронный import в середине функции, а потом понимаешь, что Polymer CLI не может собрать работающий билд из-за этого, впадаешь в растерянность и остается только ждать. Ждать что разрабы приведут все это к продакшн виду. Пока не будет нормального CLI, который начнет делать рабочие билды не видать ни нового YouTube без полифилов, ни Qweeto на одном порту с серваком. 

Такие дела.