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

ES6 javascript模块导出选项

马泓
2023-03-14

我看到ES6模块的公共导出是通过以下两种方式完成的:

// method 1
export var getAnswer = function () { return 'forty two'; };

// method 2
export default function () { return 'forty two'; };
  1. 这两个都有效吗?
  2. 如果是这样,为什么它们都存在?
  3. 使用ES6语法的模块导出还有其他有效的选项吗?

我很惊讶我还没能用我的谷歌找到答案。我只关心ES6模块,而不关心通用JS、要求JS、AMD、节点等。

共有3个答案

钱雅逸
2023-03-14
  1. 这两个都有效吗?

否,export函数(){return answer;} 无效,要么使用默认值,要么向该函数声明添加名称。

他们没有:)

你可以在这里看到很多有效的选项:https://github.com/eslint/espree/pull/43

金理
2023-03-14

这两个都是有效的。

方法1提供命名导出。这里的关键是,您可以导出多个内容。应使用此选项,而不是导出具有多个属性的对象。导入带有命名导出的模块时,请使用import{a,b}from c

方法2提供默认导出。只能有一个默认导出。这主要用于导出单个对象,如,或单个函数,您希望在没有任何额外支持的情况下使用这些对象。使用默认导出导入模块时,请使用import d from c

注意,两者都可以使用!因此,如果您有一个主要的主函数,其中包含一些偶尔使用的帮助器,您可以导出帮助器,并导出默认的主函数。当您导入一个模块并且需要两种导出时,请使用从c导入d,{a, b}。

另一个选项是,您可以通过在模块的末尾列出它们来获得命名的导出,就像这样:导出{a, b, c}。您还可以将它们重命名为导出{a为$a,b为c}

我从本文中获得了所有这些信息,这是我能够找到的最新es6模块信息的最佳来源。

苏凯
2023-03-14

一年多后,这是我在这个问题上找到的最好的信息。

出口有4种类型。下面是每种方法的使用示例,以及使用它们的一些导入:

// default exports
export default 42;
export default {};
export default [];
export default (1 + 2);
export default foo;
export default function () {}
export default class {}
export default function foo () {}
export default class foo {}

// variables exports
export var foo = 1;
export var foo = function () {};
export var bar;
export let foo = 2;
export let bar;
export const foo = 3;
export function foo () {}
export class foo {}

// named exports
export {};
export {foo};
export {foo, bar};
export {foo as bar};
export {foo as default};
export {foo as default, bar};

// exports from
export * from "foo";
export {} from "foo";
export {foo} from "foo";
export {foo, bar} from "foo";
export {foo as bar} from "foo";
export {foo as default} from "foo";
export {foo as default, bar} from "foo";
export {default} from "foo";
export {default as foo} from "foo";
// default imports
import foo from "foo";
import {default as foo} from "foo";

// named imports
import {} from "foo";
import {bar} from "foo";
import {bar, baz} from "foo";
import {bar as baz} from "foo";
import {bar as baz, xyz} from "foo";

// glob imports
import * as foo from "foo";

// mixing imports
import foo, {baz as xyz} from "foo";
import foo, * as bar from "foo";

// just import
import "foo";

来源

 类似资料:
  • 本文向大家介绍详解JS模块导入导出,包括了详解JS模块导入导出的使用技巧和注意事项,需要的朋友参考一下 开发中基本不会将所有的业务逻辑代码放在一个JS文件中,特别是在使用前端框架,进行组件化开发中时,会复用相应的组件。这时,就会用到模块导入/导出的方法了。 当然,上面提到有模块的概念,也是在JS用于服务器端编程的时候才会出现,我们在使用前端框架时,使用npm run dev,不就是启动了一个nod

  • 问题内容: 我想知道配置模块导出的最佳方法是什么。在下面的示例中,“ async.function”可以是FS或HTTP请求,为示例起见简化了该请求: 这是示例代码(asynmodule.js): 如何仅在执行异步回调后导出模块? 编辑 有关我的实际用例的简短说明:我正在编写一个模块,用于在fs.exists()回调中配置nconf(https://github.com/flatiron/ncon

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

  • 假设您正在构建一个npm库,并且希望导出您的函数。像这样: 现在您想导出它们。在本地执行此操作的方法是: 但是你可以这样做: 有什么区别?他们做同样的事情吗?

  • 模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(

  • 数据的导入、导出任务一旦成功建立,结果将以邮件的形式发送到创建任务的用户邮箱里。 数据导出 接口 POST https://cloud.minapp.com/userve/v1/table/:table_id/export/ 其中 table_id 是数据表的 ID 请求参数 参数 类型 必填 说明 file_type String 是 导出文件的格式,支持 csv、json 格式 mode St