Комментарии 13
*TIGGERED*
Нужно открыть страницу chrome://flags/#enable-experimental-web-platform-features.
Включить флаг и перезагрузить браузер.
Проверить, что нативные модули работают, можно тут: https://codepen.io/malyw/project/full/DkddeZ/
Вероятнее всего опечатка, не exports
, а export
. (exports — это объект экспотра из commonjs / node.js).
const modulesSupported = typeof exports !== undefined;
// =>
const modulesSupported = typeof export !== undefined;
https://tc39.github.io/ecma262/#prod-Keyword
https://tc39.github.io/ecma262/#prod-ExportDeclaration
typeof exports; // => "undefined"
typeof export; // => SyntaxError: Unexpected token export
Т.е. typeof exports
— это не SyntaxError
, это валидный синтаксис.
Теперь вы знаете, что можно перейти с Webpack-а на нативные модули и даже знаете о существовании lodash-es.
Не совсем понимаю в чем реальный профит:
- 600 запросов, пусть и HTTP/2. Почему бы этот файл не склеить и не закешировать, ведь библиотеки не так часто обновляют в уже работающем проекте.
- Если используется не чистый JS, а Flow или TypeScript, все равно придется их чем-то транспилить / компиллить. Это же относится и к минификации.
- Хоть современны браузеры и быстро обновляются, но всегда будет IE или Safari. А значит нужны полифилы или фолбэки. А раз стоит такой выбор, то почему бы сразу не доунгрейднуть код транспилятором до ES5 и уже отточенных
require.js
/webpack
модулей.
Я люблю модульную систему ESNext, и мне нравится ее спецификация (и строгость этой спеки), но мне кажется что ее миссия уже выполнена, она стандартизировала модули, и окончательно внесла ясность. А вот зачем использовать их нативную реализацию, для меня пока загадка. Или я что-то не понимаю?
Хоть современны браузеры и быстро обновляются, но всегда будет IE или Safari. А значит нужны полифилы или фолбэки. А раз стоит такой выбор, то почему бы сразу не доунгрейднуть код транспилятором до ES5 и уже отточенных require.js / webpack модулей.
Но откуда возьмется поддержка в IE и Safari, если её туда не добавят разработчики? Замкнутый круг. Поддержки нет, потому что нет пользователей. Пользователей нет, потому что нет поддержки.
Нативные EcmaScript модули: новые возможности и отличия от webpack