325

ES6 では、次のようなファイルから複数のエクスポートをインポートできます。

import {ThingA, ThingB, ThingC} from 'lib/things';

ただし、ファイルごとに 1 つのモジュールを持つ構成が気に入っています。私はこのようなインポートになります:

import ThingA from 'lib/things/ThingA';
import ThingB from 'lib/things/ThingB';
import ThingC from 'lib/things/ThingC';

これができるようになりたいです:

import {ThingA, ThingB, ThingC} from 'lib/things/*';

または同様のもので、各ファイルには1つのデフォルトエクスポートが含まれ、各モジュールにはそのファイルと同じ名前が付けられるという理解された規則があります。

これは可能ですか?

4

14 に答える 14

152

回答で既に提供されているテーマの単なるバリエーションですが、これはどうですか:

Thing

export default function ThingA () {}

ではthings/index.js

export {default as ThingA} from './ThingA'
export {default as ThingB} from './ThingB'
export {default as ThingC} from './ThingC'

次に、他の場所ですべてのものを消費するために、

import * as things from './things'
things.ThingA()

または、一部のものだけを消費するために、

import {ThingA,ThingB} from './things'
于 2015-07-14T09:16:01.883 に答える
9

受け入れられた質問に似ていますが、インデックスファイルを作成するたびに新しいモジュールをインデックスファイルに追加する必要なく、スケーリングできます。

./modules/moduleA.js

export const example = 'example';
export const anotherExample = 'anotherExample';

./modules/index.js

// require all modules on the path and with the pattern defined
const req = require.context('./', true, /.js$/);

const modules = req.keys().map(req);

// export all modules
module.exports = modules;

./example.js

import { example, anotherExample } from './modules'
于 2019-07-12T15:12:51.437 に答える
-11

A、B、C でデフォルトをエクスポートせず、{} のみをエクスポートする場合は、そうすることが可能です

// things/A.js
export function A() {}

// things/B.js
export function B() {}

// things/C.js
export function C() {}

// foo.js
import * as Foo from ./thing
Foo.A()
Foo.B()
Foo.C()
于 2016-05-20T14:28:02.763 に答える