javascript - ES6+ javascript 模块导出选项

标签 javascript syntax module export ecmascript-6

我见过通过以下两种方式完成 ES6 模块的公共(public)导出:

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

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

我很惊讶我无法用我的 googlefu 找到答案。我关心 ES6 模块, CommonJS、RequireJS、AMD、Node 等。

最佳答案

一年多以后,这里是我找到的有关该主题的最佳信息。

导出有 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";

Source.

关于javascript - ES6+ javascript 模块导出选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494365/

相关文章:

ios - 在 iOS 中找不到自定义框架路径

javascript - 每次加载适当的页面时,如何使脚本仅重定向一次?

javascript - IndexedDB 错误 : IDBObjectStore Symbol could not be cloned

javascript - 以最快的方式从字符串中检索子字符串。从头到尾的格式是固定的,长度也是不固定的

javascript - 使用 Javascript,为什么 ASP.Net grdiview 中的多个下拉列表中的所有值都为空

javascript - Node.js 中的模块作用域

syntax - 全局声明在 Verilog 2001 语法中是非法的!

emacs 主要模式字符之间的字体锁定(括号、引号等)

ios - Swift 语法,并理解语言的某些部分

python - 带模块的可移植 Python 脚本