LINUX.ORG.RU

Критика реакционной клики разрабов «ECMA6 в продакшне»

 , ,


3

4

НЕМИНУЕМО РАЗГРОМНАЯ КРИТИКА КЛИКИ СТОРОННИКОВ «КОМПИЛЛИРОВАТЬ 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 в продакшне». Всех кто пробормочет — «ЖС тулчейк» в краску.

https://s11.postimg.org/51t5set2r/struggle_session.jpg



Последнее исправление: Ni2 (всего исправлений: 2)
Ответ на: комментарий от Vit

Под браузер все равно надо менеджер ассетов.

если можно, дай пжл ссылку на то что имеется ввиду, бо незнакомые слова какие то..

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

Самое что на слуху - webpack (я не использую). Мы когда-то делали порт рубевского sprockets https://github.com/nodeca/mincer, но он не очень - староват подход. Еще есть всякие яндексовские тулзы под БЕМ.

Имеется в виду хреновина, которая собирает js и css в то что будет отдаваться браузеру. Обычно надо сконпелять less / sass / es6, применить макросы, углифицировать, и сложить в общие файлы.

Vit ★★★★★
()
Ответ на: комментарий от annulen

там есть нюансы - что-то работает, что-то не так или вообще нет, в этом проблемы

anonymous
()
Ответ на: комментарий от anonymous

влить в мейнстрим обратно так сказать ...

смотри в сторону dev-зависимостей, ну то есть там где нужна сборка - устанавливать зависимости после развертывания или тянуть отдельным DCVS-проектом или как-то еще: варианты возможны и есть.

anonymous
()
Ответ на: комментарий от annulen

даешь годный noscript фоллбек

Часть сайтов впринципе не предназначена быть просмотренной без js. мы всё таки не в 2000х уже 20 лет практически как.

мы для тех у кого js не работает табличку вешаем «у вас джиэс не работает. это штука чтобы сделать сайт лучше. все современные сайты его юзают. пожалуйста, удостоверьтесь что джиэс включён». потому как без js там смотреть не на что.

AndreyKl ★★★★★
()
Ответ на: комментарий от AndreyKl

вас джиэс не работает. это штука чтобы сделать сайт лучше.
без js там смотреть не на что.

То есть вы врете. Надо писать: извините, без js зонд не зайдет и реклама не прокрутится, и еще наши макаки не умеют без js, простите извините.

bread
()

ну и да, тс-у. как мне кажется, технология таки идёт вперёд, писать на 5 джиэс то ещё удовольствие. то что у вас спецы попались негодные, это не ecma6 вина.

и как по мне, почти пофиг что там занимает хеллоуворлд. главное - сколько занимает результат, минифицированный и сжатый.

по поводу глюков, бог его знает, сам я на ecma6 не пишу, возможно он сырой, это специалисты вроде Vit лучше знают. если ваши специалисты полезли на технологию не будучи готовы, то тот кто их нанял наверное на что то не на то глядел.

AndreyKl ★★★★★
()
Ответ на: комментарий от bread

не угадал, там рекламы нет от слова вообще. сайт довольно сложный, много логики на стороне пользователя чтобы интерфейс не смущал - подсказки, вычислений целая куча. чтобы сделать ноджиэсфолбек , надо это всё заново переписать в сильно упрощённом виде и поддерживтаь две версии. я что то не уверен что заказчик будет в восторге если ему такое предложат. я бы по крайней мере не был. ЦА - обычные люди (те кто джиэс не отключает).

AndreyKl ★★★★★
()

Чем больше разрабы пекутся о поддержке старья, тем больше юзеров остаются на этом старье, замкнутый круг получается. Глупейшее занятие.

А компилить жаваскрипт — занятие изначально глупое, это язык который много чего делает в рантайме.

actionpattern
()
Ответ на: комментарий от actionpattern

Они компилят жс в жс. Тот жс, который оригинальный, им слишком кислый. Отсюда и вся драма. В треде уже отметились свидетели ES8 (у них там релизы стандарта раз в полгода что ли, очередная жесть).

bread
()
Ответ на: комментарий от AndreyKl

у вас джиэс не работает. это штука чтобы сделать сайт лучше

Да, конечно, так и поверили.

Часть сайтов впринципе не предназначена быть просмотренной без js. мы всё таки не в 2000х уже 20 лет практически как.

Что в 2000, что в 2017, гуглоаналитикс и тормозящие анимации, как были не нужны, так и остались.

Deleted
()
Последнее исправление: romeo250501 (всего исправлений: 3)
Ответ на: комментарий от AndreyKl

Гугли что-то типа «assets manager» / «assets builder» если надо будет. Термин в принципе устойчивый, но сейчас пошла тенденция описывать (и собирать) проекты не на уровне файлов, а на уровне компонент (виджетов?). И как называются подобные сборщики - не знаю.

Vit ★★★★★
()
Ответ на: комментарий от annulen

Носкрипт не вариант, это только для индексации годится. Делать на него фолбек на порядок гиморнее чем транспилер привернуть. На осла сделать забить не получается, многовато его все еще. Можно забить на IE < 11, но классов от этого не появится.

В принципе твоя идея не совсем дурацкая, но надо годик-два подождать. Майкрософт вроде очень бодро занимается webassembly и т.п., а значит будет обновлять движки.

Vit ★★★★★
()
Ответ на: комментарий от ritsufag

Просто жс делали стажеры для головоногих моллюсков. Долгие годы это всех устраивало, но теперь пришла команда загнать всех в веб, приходится прокачивать язычок и моллюсков в ускоренном темпе. Одним моллюскам это нравится и кажется развитием, другие теряют рассудок и отмирают. Со стороны же это смотрится как адский цирк.

bread
()
Ответ на: комментарий от Ni2

Если был бы тест а-ля acid 3 для жс

Так он есть. И не только ес6, но и выше (смотреть кнопочки вверху страницы). https://kangax.github.io/compat-table/es6/

Еще полезные ссылки, позволяющие узнать в какой стадии та или иная фича:

Впринципе, почти всё для комфортной работы с es6 основные браузеры уже поддерживают. За исключением import/export - вот с модулями как-то не заладилось. Насколько я понял, пока не могут прийти к общему соглашению как их правильно реализовывать.

Еще из неприятного - firefox принципиально не поддерживает html imports. Якобы ненужная фича на фоне es modules. https://developer.mozilla.org/en-US/docs/Web/Web_Components/HTML_Imports

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 3)

Вот это бомбануло. Веб - это как минное поле. Тут такое на каждом шагу. А что тут поделаешь? Можно использовать проверенные временем инструменты и не гнаться за мейнстримом.

th3m3 ★★★★★
()
Ответ на: комментарий от th3m3

Веб - это как минное поле. Тут такое на каждом шагу

Неправда. В W3C сидят на редкость адекватные седобородые. А минным полем веб делают придурки с горящими глазами из ОП-поста. Порой смотришь на очередной «тренд» и кажется словно непризнанные шизофреники из теоретической физики, разрабатывающие свои «теории всего», все разом переметнулись в веб-разработку

makoven ★★★★★
()
Ответ на: комментарий от makoven

Впринципе, почти всё для комфортной работы с es6 основные браузеры уже поддерживают.

Судя по жирной красноте в разделе mobile ты что-то не договариваешь.

bread
()
Ответ на: комментарий от EXL

Надеюсь на то, что придёт WebAsm и принесёт нормальные фреймворки (подобные десктопным) в Web.

А какие десктопные фронтендные фреймворки знаете вы?

static_lab ★★★★★
()
Ответ на: комментарий от makoven

Я имел ввиду мобильный сафари, и мобильный хром тоже - на мобильниках не работает это все, пришлось отказаться.

emptykiev
()
Ответ на: комментарий от makoven

Не выяснял я чего именно там не хватает, но скрипты успешно тестируемые на хроме (с галочками) не запустились 5s, вот и все, и способа это обойти я не нашел.

emptykiev
()
Ответ на: комментарий от static_lab

По-моему все как раз наоборот, и веб задает стандарт и для десктопа в том числе. React - лучшее что изобрело человечество, в предверии web-component.

emptykiev
()
Ответ на: комментарий от emptykiev

в предверии web-component

А мудаки из мозиллы откладывают светлое будущее не поддерживая html imports. Благо у них процент пользователей небольшой

makoven ★★★★★
()
Ответ на: комментарий от emptykiev

Видите же, кому-то не нравится, что сейчас надо компилировать фронтенд и тянуть мегабайты библиотек, поэтому ждут wasm, чтобы компилировать фронтенд и тянуть мегабайты рантайма.

static_lab ★★★★★
()

Бред какой-то. Любой инструмент или язык нужно использовать по назначению и будет всем счастье :-)

dicos ★★
()
Ответ на: комментарий от makoven

Это ты про компоненту Android WebWiew до того, как ее заменил хром

Ясно, очередной хипстер с распоследней мобилой. Но... ведь и хром на мобилах кривой. Ты вообще разработчик или тоже эксперт?

bread
()
Ответ на: комментарий от bread

React - лучшее что изобрело человечество

Это ты еще php3 не видел.

а вот это хорошая шутка
два чая :)

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от EXL

Это какие такие фреймверки десктопные? Qt что-ли? Спасибо, мне лично для веб Qt ненуж0н, есть Vue.js и React, ну и Django с рельсами для бэкенда.

menangen ★★★★★
()
Ответ на: комментарий от bread

хипстер с распоследней мобилой

Nexus 5 уже четвертый год. Сам экран менял.

Да. Прошивки на телефоны разработчики почти не обновляют. Но это проблема создателей телефонов (собирают из ***на и палок, патчат ядро под каждую модель). Это не повод браузерам стагнировать

makoven ★★★★★
()
Ответ на: комментарий от menangen

Просто некоторым промыли мозги, мол веб - страшная помойка из древних технологий. И они логично додумали мысль: «а значит где-то (на десктопе?) всё цветет и пахнет»

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

Поддерживаю. Имхо, везде куча недостатков, что Qt, что новомодный es6 с import'ами, которые ни в одном браузере не работают. Всё от человеческой природы, куча разработчиков - каждый тянет в свою сторону.

menangen ★★★★★
()
Ответ на: комментарий от menangen

es6 с import'ами, которые ни в одном браузере не работают

Потому что это разные спеки.

ES - это встраиваемый язык. Он зависим от окружения, куда его встраивают, и не может работать с внешними ресурсами сам по себе.

Module Loader в браузерах - это часть Web API, к которому ECMAScript не имеет совершенно никакого отношения, ровно как оно не имеет оношения ко всему прочему, типа DOM, файловой системы, девайсов, процессов, потоков, и прочего, прочего, прочего.

Всё от человеческой природы

Вот это правильно.

anonymous
()
Ответ на: комментарий от makoven

Просто некоторым промыли мозги, мол веб - страшная помойка из древних технологий.

Это устаревшие сведения, да. Теперь веб - это жуткая бормотуха из говна мамонта и передовых инновационных нанотехнологий типа риакта. Еще бы по ложечке хаскеля с лиспом туда, и можно поджигать.

bread
()
Ответ на: комментарий от bread

Собственно, реактам только потому, что нормальные технологии там не работают.

Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.