НЕМИНУЕМО РАЗГРОМНАЯ КРИТИКА КЛИКИ СТОРОННИКОВ «КОМПИЛЛИРОВАТЬ ECMA6 В ПРОДАКШНЕ!!»
РАЗГРОМ. ЧАСТЬ 1.
Сторонники компиляции ECMA6 предлагает использовать код из под т.н. джаваскрипт компилятора транслирующего код из ECMA6 в текущий браузерный ЖС-стандарт-франкенштейт, даже поверх всяких оптимайзеров, умных минификаторов, улучшайзеров. Крайние радикалы из этой клики делают это в самом браузере.
ИХ ПРЕДЛОЖЕНИЕ — они хотят глючно компилить, глючный ECMA6 в глючный браузерный ЖС. Глюков еще добавят все что они хотят иметь дальше в их т.н. пайплайне. Тот-же оптимайзейр (google cloud optimizer) от гугла производит код который даже в самом chrome от гугла не работает в половине случаев.
Единственное решение которое работает в каком либо размерном коммерческом проекте это: писать фронтенд код от руки — что видит разраб, то и работает в браузере.
ЖСу более чем свойственно ломаться незаметно. Дебаг какой либо нетривиальной ошибки перерастает в дебаг самого браузера в GDB. В случае тихого глюкания ECMA6 компилятора, нахождение ошибки вынуждает останавливать всю команду, откатывать код на недели.
РАЗГРОМ. ЧАСТЬ 2.
«Компилированный ЖС» — это код с сотней зависимостей который имеет сотни путей как по разному глючить с разными комбинациями «жс компиляторов», браузеров, версий node и v8fpm. Разбирая зависимости проекта вы часто натыкаетесь на такие перлы в README: «do not use with Babel,» «Does not work with polyfills a,b, and c,» «works on node 0.6, but not 0.10 and I don't know, nor want to know why,» «works on chrome with flags a,b,c and compile parameter z,» «works natively on Safari, you are free to port it to another browser if you want so.»
Каким макаром интерпретируемый язык всего с 33 кивордами и 160 нативными функциями может иметь различия в реализации простейших арифметических функций и ООП алгоритмов плохо понятно.
Вскоре после появления оных умников на любом проекте, у вас будет разукрашенная таблички с зависимостями каждой версией браузера, «компилятора», и версиями рабочих версий зависимостей.
Веселья добавит если кто то в команде начнет тихо использовать свой костылятор-компилятор на своем тестовом окружении и коммитить в тихую весь месяц и множить баги которые будут ломать чей-то еще код, пока вы не поймете что бажный код в коммитах идет от одного человека.
РАЗГРОМ. ЧАСТЬ 3.
Массированное использование «компилированного» ЖС приводит к многомегабайтным кусками минифицированного кода на самых простых проектах.
Толк от использование больших сторонних библиотек превышает в разы какую либо пользу от того что какой то выскочка-умник-соплежуй может что то написать без них — дайте волю одному их таки распустить руки когда такой попросит «давайте я вам запиздярю quicksort на JS» и через месяц у вас в репе будет еще 20 таких же криво-косо велосипедов. Продакшн левел библиотек под ECMA6 кот наплакал. Все будут писать с нуля сами горе-ECMA6-пионеры за ваши деньги, и в процессе неизбежно переходить к велосипедостроению.
Имеющийся код на кодопомоях NPM это ассорти из:
- библиотек однострочников
- библиотек написаны фиг знает кем, 6 лет назад, кто не отвечает на email
- библиотек которые имеют зависимости на несколько страниц
- просто нерабочего кода
- забинденного кода который не компиллиться чем либо кроме msvc
- библиотек удаленных/потерянных/переименованных
- кода под trapware лицензиями
- кода который не будет работать с тулчейном горе-ECMA6-пионерии и который они будут переписывать за ваши деньги
Ревизионисты-сторонники компиляции ECMA6 обычно говорят — «чистый, быстрый код без костылей фреймворков и jQuery. ECMA6, эжайл, бауэр это будущее.» Мы говорим — ИХ hello world В ПОЛ МЕГАБАЙТА. ШВАБРУ ИМ В ОЧКО, А НЕ БУДУЩЕЕ!
РАЗГРОМ. ЧАСТЬ 4.
Когда этим ревизионистам вменяют то что они пустили проект под откос, они предложат:
- «Если размер такая проблема, давайте мы используем google cloud compiler — там умный мащин лёнин» — после этого ваши QA будут дебагить запутанный кода и тратить по дню на один баг.
- «Если баги такая проблема, давайте мы вам напишем debugging harness и прочие дебагилки внутри кода» — после этого они растратят недели на это. После этого же, баги продолжают появляться — они не были покрыты их дебагилками.
- «Давайте тогда мы вставим дебагилку туда куда мы ее еще не вставили» — опять тратят неделю — баг был не там. Работа методом тыка продолжается. Недели уходят, баг в конце концов найден, теперь осталось найти еще 20.
- «Давайте мы используем нэйтив юнит тэст» — вы, как опытный разраб прерываете пионеров на словах «юнит тэст в фронтенде» в конце концов понимая их лунатичность. Строгим голосом говорите - все разминифицируем, смотрим что работает и не работает после вашего тулчейна, строка в строку, ИСПОЛНЯТЬ!
- «Давайте мы попробуем новый ЖС компи...» — «ВЫ УВОЛЕНЫ!,» с шваброй в одном месте умника выпроваживают из здания, вы вздыхаете. Решено оставить всех жуниоров неиспорченных ревизионистами-реакционерами, зашвабрить архитектов и синиоров пришедших с ним. Начинается многомесячный процесс переписки всего и вся на нормальный браузерный жс, разрядка в коллективе, а вам еще надо запилить фичалист на 20 страниц.
Разрабы всех стран, присоединяйтесь к революционному разгрому реакционерской-ревизионистской шайки «компиллируемый ECMA6 в продакшне». Всех кто пробормочет — «ЖС тулчейк» в краску.