什么是JavaScript中的“导出默认”?

文件: SafeString.js

// Build out our basic SafeString type function SafeString(string) { this.string = string; } SafeString.prototype.toString = function() { return "" + this.string; }; export default SafeString; 

我从来没有见过export default 。 是否有任何相当的东西export default ,可以更容易理解?

这是ES6模块系统的一部分,在这里描述 。 该文档中还有一个有用的例子,

如果一个模块定义了一个默认导出:

 module "foo" { export default function() { console.log("hello!") } } 

那么可以通过省略花括号来导入该默认导出:

 import foo from "foo"; foo(); // hello! 

更新:从2015年2月2日起,模块系统在§15.2中定义,特别是在ES6草案规范的§15.2.3中定义了export语法。 当然,由于它仍然是一个草案,未来这可能会改变。

当文件中只有一个导出时,可以使用export default function(){} 。 注意这个函数没有名字。 另一种方法是命名导出。

此页面详细介绍了export default以及有关我发现非常有用的模块的其他详细信息。

export default用于从脚本文件中导出单个类,函数或基元。

导出也可以写成

 export default function SafeString(string) { this.string = string; } SafeString.prototype.toString = function() { return "" + this.string; }; 

这用于在另一个脚本文件中导入这个函数

app.js中说,你可以

 import SafeString from './handlebars/safe-string'; 

一点关于出口

正如名称所述,它用于从脚本文件或模块中导出函数,对象,类或expression式

Utiliites.js

 export function cube(x) { return x * x * x; } export const foo = Math.PI + Math.SQRT2; 

这可以导入并用作

App.js

 import { cube, foo } from 'Utilities'; console.log(cube(3)); // 27 console.log(foo); // 4.555806215962888 

要么

 import * as utilities from 'Utilities'; console.log(utilities.cube(3)); // 27 console.log(utilities.foo); // 4.555806215962888 

当使用导出默认值时,这是非常简单的。 脚本文件只是导出一件事。 cube.js

 export default function cube(x) { return x * x * x; }; 

并用作App.js

 import Cube from 'cube'; console.log(Cube(3)); // 27