Импортировать все именованные экспорты под их именем экспорта без явного их перечисления

У меня есть файл modules.js, который экспортирует все экспорты default из моих модулей по их имени модуля (после ES6 экспорт / импорт в индексный файл):

export { default as a } from './a/a'
export { default as b } from './b/b'
...
export { default as y } from './y/y'
export { default as z } from './z/z'

В свой app.js я хочу импортировать этот комплект модулей.

Я хочу, чтобы экспортируемые переменные из a ... z были импортированы из module.js, чтобы я мог использовать их в app.js.

Очевидно, я не хочу этого делать

import { a, b, c, d, ... , x, y, z } from './modules/modules'

поскольку это очень многословно, и всякий раз, когда я добавлял модуль в module.js, мне также приходилось менять import в app.js.

я пробовал

import * from './modules/modules'

но переменные недоступны в app.js.

Вопрос: Как мне просто импортировать все названные экспортапод их экспортным названием?

Пример модуля ./modules/a/a.js:

export default function a() {
  // whatever
}

Вы можете сделать что-то вроде этого import m from './modules/modules' и получить доступ к переменной как m.a или m.b ... Думаю, это не будет стоить много.

Mohit 26.09.2018 13:51

@Mohit Это может не стоить много, но невозможно ли импортировать без необходимости в объекте-владельце?

connexo 26.09.2018 13:59

Нет дополнительных затрат на наличие объекта пространства имен модуля из import * as foo from .... Фактически, с его помощью движки могут заранее определить, откуда берутся переменные, и, таким образом, лучше оптимизировать ваш код.

loganfsmyth 26.09.2018 23:26

@connexo Насколько я знаю, в текущей версии ECMAScript 6 нет никакого возможного варианта того, что вы ожидаете.

Mohit 27.09.2018 15:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
4
2 671
1

Ответы 1

Просто попробуйте импортировать * как sampleModule из './modules/modules'

Вы можете использовать все функции, экспортированные из модуля, используя переменную sampleModule.

import * as sampleModule from './modules/modules'

import './modules/modules'

Невозможно импортировать без необходимости в хост-объекте?

connexo 26.09.2018 14:00

лучше использовать приведенный ниже код. import './modules/modules';

Prasanna Brabourame 26.09.2018 14:13

Другие вопросы по теме