Эта строка:
import '../components/App.js';
... на самом деле ничего не импортирует, она просто запускает код в App.js
. Чтобы импортировать экспорт по умолчанию, вы делаете это явно:
import App from '../components/App.js';
// ^^^^^^^^−−−−−−−−−−−−−−−−−−−−−−−−−−−
Теперь вы можете спросить: «Но почему импорт App.js
и запуск его кода не создает App
автоматически?» Поскольку модули не создают глобальные объекты (если только вы go не стараетесь сделать это)., И нет автоматического c импорта. Одним из ключевых аспектов модулей является то, что вы явно определяете связи между ними. Одно из преимуществ этого заключается в том, что когда вы используете библиотеку с большим количеством функций, экспортируемых одним модулем, браузер (или ваш сборщик) может встряхнуть дерево, сохранив только те части, которые вы действительно используете. , а остальное отбросить (мертвое дерево, выпавшее при сотрясении дерева).