Почему NodeJS так долго не реализует поддержку модулей ES6?

101
17 июля 2019, 14:30

Не взирая на то, что спецификацию ES6 выпустили в 2015 году, даже в 2019 NodeJS всё ещё не реализует этот стандарт. Поддержка всё ещё экспериментальная и судя по описанию работает только на уровне V8: система модулей, которую написали сами разработчики ноды, как будто живет в другом мире.

В сочетании с ОГРОМНЫМ количеством уже готовых подпрограмм, использующих модули CommonJS, возникает вопрос: Что именно побудило Ecma International принять стандарт, идущий разнонаправленно движению публикации JS-библиотек как пакетов NPM, модулей NodeJS?

Answer 1

Действительно, спецификация модулей ES6 в корень расходится с CommonJS: модули ES6, в отличие от CommonJS, подгружаются асинхронно. Подробнее о особенностях модулей ES6 можно посмотреть в этой презентации

Кроме того, стандарт так же не описывает стандартное местоположение модулей, что порождает "path hell". С этим активно борются разработчики typescript, ситуация подробно описывается тут

import { DefaultRenderer } from '../../../rendereders'
import { PayPalClient } from '../../services/PayPal'

Странно, что спецификация полностью проигнорировала интересы разработчиков NodeJS, ведь HTTP/2 Server Push позволяет передать клиенту необходимые скрипты не дожидаясь запроса и задержки в исполнении не будет.

Вероятно, сделано это в уклон отказа от транспиляции по ненадобности и всё большего использования подгрузки кода из сторонних CDN в браузерах. Не приятно лишь то, что крупнейшие корпорации, реализующие CDN сервисы, зарабатывают на таргетинговой рекламе (шпионаже за пользователями).

P.S. Позже заметил, что за банкет платит именно Google.

READ ALSO
Работа Reverence Type [дубликат]

Работа Reverence Type [дубликат]

На данный вопрос уже ответили:

128
Передача данных express.js

Передача данных express.js

Есть такой участок кода на сервереВыполняется скрипт к бд и получаются данные в ответ

142
Требуется зациклить анимацию

Требуется зациклить анимацию

Столкнулся с проблемой зацикливания анимация

142
Uncaught (in promise) TypeError: The 'listener' parameter must be a function

Uncaught (in promise) TypeError: The 'listener' parameter must be a function

Вызываю функцию addListener из библиотеки WebMidi, третий параметр называется 'listener'Требуется, чтобы этот параметр был функцией (В моём случае это...

115