Какова цель экспорта по умолчанию в модулях ES?

Модули ES имеют концепцию экспорта по умолчанию и импорта по умолчанию, которая выглядит следующим образом:

export default foo;             // roughly sugar for: const tmp = foo; export { tmp as default }
import d from './myModule.js';  // roughly sugar for: import { default as d } from './myModule.js'

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

Итак: почему существует эта функция экспорта по умолчанию? Какую проблему это решает? Спецификация, похоже, не дает никаких оснований для этого.


person jameshfisher    schedule 14.10.2020    source источник
comment
Я склонен закрыть как дубликат Почему в JavaScript есть экспорт по умолчанию?, но вы недавно отредактировали там пост, поэтому вы должны его запомнить. Почему мой ответ не дает той аргументации, которую вы ищете?   -  person Bergi    schedule 14.10.2020
comment
Возможно (1) побудить автора сценария писать модули, которые делают (и экспортировать) одно, и только одно (2) разрешить сценариям указывать главное, которое они экспортируют (например, React ), но также имеют связанные побочные вещи, которые они экспортируют (например, useEffect). Достаточно ли эти причины, чтобы оправдать это, основано на мнении, хотя   -  person CertainPerformance    schedule 14.10.2020
comment
Я думаю, что любой ответ был бы спекуляцией, если бы они не участвовали в написании спецификации. Я не знаю, что это за прямую ответственность.   -  person zero298    schedule 14.10.2020
comment
@CertainPerformance Я бы сказал, что это предназначено для того, чтобы позволить им делать это, а не поощрять их. Модули, которые экспортируют только что-то одно, были широко популярны до того, как был разработан ES6, и считалось проблемой принудительное именование экспорта в этом общем случае использования.   -  person Bergi    schedule 14.10.2020
comment
@Bergi ага, я смутно помнил, что где-то видел этот вопрос, но не смог найти его снова! ????‍♂️   -  person jameshfisher    schedule 14.10.2020