Импорт агрегатов либо через имя агрегата, либо через имена деталей - PullRequest
1 голос
/ 09 июля 2019

Следующие работы прекрасно :

// libPart1.js
export default 'file part1.js';

// libPart2.js
export default 'file part2.js';

// lib.js
import libPart1 from './libPart1';
import libPart2 from './libPart2';

export default {
    libPart1, libPart2
}

// main1.js
import lib from './lib';

console.dir(lib.libPart1);
console.dir(lib.libPart2);

Я также могу использовать именованный импорт:

// lib.js
export {default as libPart1} from './libPart1';
export {default as libPart2} from './libPart2';

// main2.js
import {libPart1, libPart2} from './lib';

console.dir(libPart1);
console.dir(libPart2);

Тем не менее, я хотел бы написать lib.jsтаким образом, что main1.js и main2.js работают нормально.

Я использую webpack, если это имеет значение.

1 Ответ

1 голос
/ 09 июля 2019

Нет, не экспортировать литералы объекта по умолчанию. Всегда используйте именованные экспорты. Чтобы включить стиль с объектом lib, используйте import пространства имен в файле main1.js, в который вы импортируете модуль. Не меняйте экспортные декларации.

// lib.js
export {default as libPart1} from './libPart1';
export {default as libPart2} from './libPart2';

// main1.js
import * as lib from './lib';
//     ^^^^^^^^
console.dir(lib.libPart1);
console.dir(lib.libPart2);

// main2.js
import {libPart1, libPart2} from './lib';

console.dir(libPart1);
console.dir(libPart2);
...