首页 文章

在ES6模块中导出多个类

提问于
浏览
70

我正在尝试创建一个导出多个ES6类的模块 . 假设我有以下目录结构:

my/
└── module/
    ├── Foo.js
    ├── Bar.js
    └── index.js

Foo.jsBar.js 每个导出一个默认的ES6类:

// Foo.js
export default class Foo {
  // class definition
}

// Bar.js
export default class Bar {
  // class definition
}

我目前的 index.js 设置如下:

import Foo from './Foo';
import Bar from './Bar';

export default {
  Foo,
  Bar,
}

但是,我无法导入 . 我希望能够做到这一点,但找不到类:

import {Foo, Bar} from 'my/module';

在ES6模块中导出多个类的正确方法是什么?

5 回答

  • 11

    在您的代码中尝试此操作:

    import Foo from './Foo';
    import Bar from './Bar';
    
    export { // without default
      Foo,
      Bar,
    }
    

    顺便说一下,你也可以这样做:

    //bundle.js
    export Foo from './Foo'
    export Bar from './Bar'
    
    //and import somewhere..
    import { Foo, Bar } from './bundle'
    

    使用 export

    export const MyFunction = () => {}
    export const MyFunction2 = () => {}
    
    const Var = 1;
    const Var2 = 2;
    export {
       Var, Var2
    }
    
    
    // Then import it this way
    import {MyFunction, MyFunction2, Var, Var2 } from './foo-bar-baz';
    

    export default 的区别

    是你可以导出的东西,并在你导入它的地方应用名称

    // export default
    const Func = () {}
    export default Func;
    
    // import it
    import Foo from './func'
    
  • 0

    希望这可以帮助:

    // Export (file name: my-functions.js)
    export const MyFunction1 = () => {}
    export const MyFunction2 = () => {}
    export const MyFunction3 = () => {}
    
    // Import
    import * as myFns from "./my-functions";
    
    myFns.MyFunction1();
    myFns.MyFunction2();
    myFns.MyFunction3();
    
    
    // OR Import it as Destructured
    import { MyFunction1, MyFunction2 } from "./my-functions";
    
    // AND you can use it like below with brackets (Parentheses) if it's a function 
    // AND without brackets if it's not function (eg. variables, Objects or Arrays)  
    MyFunction1();
    MyFunction2();
    
  • 2

    @webdeb 's answer didn' t为我工作,我在使用Babel编译ES6时遇到 unexpected token 错误,执行命名的默认导出 .

    然而,这对我有用:

    // Foo.js
    export default Foo
    ...
    
    // bundle.js
    export { default as Foo } from './Foo'
    export { default as Bar } from './Bar'
    ...
    
    // and import somewhere..
    import { Foo, Bar } from './bundle'
    
  • 134
    // export in index.js
    export { default as Foo } from './Foo';
    export { default as Bar } from './Bar';
    
    // then import both
    import { Foo, Bar } from 'my/module';
    
  • 1

    要导出类的实例,可以使用以下语法:

    // export index.js
    const Foo = require('./my/module/foo');
    const Bar = require('./my/module/bar');
    
    module.exports = {
        Foo : new Foo(),
        Bar : new Bar()
    };
    
    // import and run method
    const {Foo,Bar} = require('module_name');
    Foo.test();
    

相关问题