当前位置: 首页 > 知识库问答 >
问题:

导出ES6模块中的多个类

黄锋
2023-03-14

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

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

Foo。js栏。js每个导出一个默认ES6类:

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

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

我目前有我的索引。js设置如下:

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

export default {
  Foo,
  Bar,
}

但是,我无法导入。我希望能够这样做,但找不到类:

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

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

共有3个答案

习海
2023-03-14

@webdeb的答案对我不起作用,我在使用Babel编译ES6时遇到了一个意外的令牌错误,执行命名的默认导出。

然而,这对我很有效:

// 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'
梁浩
2023-03-14

希望这有助于:

// Export (file name: my-functions.js)
export const MyFunction1 = () => {}
export const MyFunction2 = () => {}
export const MyFunction3 = () => {}

// if using `eslint` (airbnb) then you will see warning, so do this:
const MyFunction1 = () => {}
const MyFunction2 = () => {}
const MyFunction3 = () => {}

export {MyFunction1, MyFunction2, MyFunction3};

// Import
import * as myFns from "./my-functions";

myFns.MyFunction1();
myFns.MyFunction2();
myFns.MyFunction3();


// OR Import it as Destructured
import { MyFunction1, MyFunction2, MyFunction3 } 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();
曹旭
2023-03-14

在代码中尝试以下操作:

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

// without default
export {
  Foo,
  Bar,
}

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

// bundle.js
export { default as Foo } from './Foo'
export { default as Bar } from './Bar'
export { default } from './Baz'

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

使用导出

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 class UserClass {
  constructor() {}
};

// import it
import User from './user'
 类似资料:
  • 问题内容: react.js的新功能并尝试遵循本教程。不幸的是,页面中给出的代码无法正常工作。webpack抱怨 想知道如何解决它。谢谢。 === App.jsx ==== === main.js === 更新1 我注释掉了所有内容,并在末尾添加了以下内容 现在没有编译错误,但是网页为空白。我不确定这里出什么问题了。 问题答案: 您只能声明一个默认出口,例如: 要么 然后做 如果要导出更多内容,则

  • 我看到ES6模块的公共导出是通过以下两种方式完成的: 这两个都有效吗? 如果是这样,为什么它们都存在? 使用ES6语法的模块导出还有其他有效的选项吗? 我很惊讶我还没能用我的谷歌找到答案。我只关心ES6模块,而不关心通用JS、要求JS、AMD、节点等。

  • 我正在使用ECMAScript 6模块。从下面的选项中从模块导出/导入多个方法的正确方法是什么? 单一类别的静态方法: 多个导出方法: 1) 导出:一个仅仅是静态方法的类感觉有点像“代码味道”,但类似地,单独导出所有内容确实感觉有点冗长。这仅仅是开发人员的偏好,还是存在性能影响? 2) 导入:“*as”语法是我首选的方法,因为它允许您使用点表示法(同时引用模块和方法)帮助代码可读性。当我可能只使用

  • 问题内容: 我正在使用ECMAScript6模块。通过以下选项从模块导出/导入多个方法的正确方法是什么? 单类静态方法: 多种导出方法: 1)导出:一类只是静态方法的感觉有点像“代码气味”,但是类似地,单独导出所有内容确实有点冗长。仅仅是开发人员的偏爱还是这里有性能影响? 2)导入:’* as’语法是我的首选方法,因为它允许您使用点表示法(同时引用模块和方法)来辅助代码的可读性。但是,当我可能只使

  • 我试图上传一个图像到内存使用multer,然后处理它与夏普和保存到磁盘。当我尝试在我的中间件中做多个module.exports时。 错误是: TypeError FileUpload.Single不是函数 到目前为止的路线是: 当我刚刚有下面的路由之前,尝试添加图像处理,我没有得到一个错误;

  • 我正在尝试使用模块。导出以创建“全局”函数,我可以在React项目中使用该函数使用Axios进行API调用。 我已经尝试了以下... 这将返回错误…'未定义fetchApi没有未定义 我知道,通常你可以使用导出默认导入和导出组件,但我认为这不是必需的,如果使用module.export. 另外,如果我尝试像这样导入。。。 我得到以下错误...尝试导入错误:'.../.../.../utils/ap