Я из платформы ozon.ru, мы компилимся в es5. Недавно катнули на полчаса в прод билд на es2018 и не увидели изменений в перфоманс метриках, кроме очевидного уменьшения js transfer size.
По поводу статьи. Почему нет сравнения var vs let/const? Например, в typescript выяснили, что переключение на var может улучшить производительность компилятора из-за отсутствия проверок TDZ.
Добавлю про разницу в генерируемом коде. Некоторые фичи языка можно скомпилить по разному: в код, максимально строго соответствующий спецификации (strict), или в упрощенный код, который покрывает большую часть реальных кейсов, но может работать некорректно в редких/нестандартных ситуациях. У babel во многих трансформирующих плагинах есть опция loose, которая как раз позволяет включить упрощенный режим. Также можно точечно настраивать через assumptions. Например, с помощью флага ignoreFunctionLength можно устранить разницу в эмите tsc и babel в примере со стрелочной функцией. У typescript фичи языка компилятся то в strict, то в loose код, и это не настраивается, кроме, пожалуй, флага useDefineForClassFields; а в TS 4.5 они сделали breaking change и стали более строго компилить шаблонные строки.
Это верно, если не оверрайдить optimizer — в этом случае вебпак подключает terser неявно с теми настройками, на которые вы привели ссылку. Если же передавать в конфиг вебпака собственноручно созданный экземпляр плагина с кастомным набором опций, то там дефолты уже другие.
Я из платформы ozon.ru, мы компилимся в es5. Недавно катнули на полчаса в прод билд на es2018 и не увидели изменений в перфоманс метриках, кроме очевидного уменьшения js transfer size.
По поводу статьи. Почему нет сравнения var vs let/const? Например, в typescript выяснили, что переключение на var может улучшить производительность компилятора из-за отсутствия проверок TDZ.
Добавлю про разницу в генерируемом коде. Некоторые фичи языка можно скомпилить по разному: в код, максимально строго соответствующий спецификации (strict), или в упрощенный код, который покрывает большую часть реальных кейсов, но может работать некорректно в редких/нестандартных ситуациях. У babel во многих трансформирующих плагинах есть опция loose, которая как раз позволяет включить упрощенный режим. Также можно точечно настраивать через assumptions. Например, с помощью флага ignoreFunctionLength можно устранить разницу в эмите tsc и babel в примере со стрелочной функцией. У typescript фичи языка компилятся то в strict, то в loose код, и это не настраивается, кроме, пожалуй, флага useDefineForClassFields; а в TS 4.5 они сделали breaking change и стали более строго компилить шаблонные строки.
Можно переопределять парсер для разных типов файлов, см. пример
> Проблема: Импорт компонентов/функций из разных типов файлов.
Разве ж это проблема, если она решается парой строчек в конфигах?
Про дебаг прода согласен, не самый лучший пример.