Новости‎ > ‎

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

Отправлено 3 авг. 2018 г., 12:29 пользователем Deni Baskovsky   [ обновлено 3 авг. 2018 г., 12:29 ]
Есть одна такая страшная штука, называется браузер. Он построен на 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 на одном порту с серваком. 

Такие дела.
Comments