在ES6中,`export const`和`export default`的区别
在ES6中,`export const`和`export default`的区别
我正在努力确定这两者之间是否存在大的区别,除了能够通过只需执行export default
导入:
import myItem from 'myItem';
和使用export const
我可以这样做:
import { myItem } from 'myItem';
除此之外还有什么区别和/或用例吗?
admin 更改状态以发布 2023年5月22日
export default
会影响导入所导出"thing"的语法,当导入时,在import
中选择名称导入导出的任何东西,无论其导出时的名称是什么,因为它被标记为“默认值”。
我喜欢(并使用)的一个有用的用例是,允许导出一个匿名函数,而不必明确命名它,仅在该函数被导入时,必须给它一个名称:
Example:
导出2个函数,其中一个是default
:
export function divide( x ){ return x / 2; } // only one 'default' function may be exported and the rest (above) must be named export default function( x ){ // <---- declared as a default function return x * x; }
导入上述函数。为default
函数想出一个名称:
// The default function should be the first to import (and named whatever) import square, {divide} from './module_1.js'; // I named the default "square" console.log( square(2), divide(2) ); // 4, 1
当使用{}
语法导入函数(或变量)时,这意味着无论导入什么,都已经在导出时命名,因此必须通过完全相同的名称导入,否则导入将无法工作。
错误示例:
-
默认函数应该首先导入
import {divide}, square from './module_1.js
-
divide_1
未在module_1.js
中导出,因此不会导入任何内容。import {divide_1} from './module_1.js
-
square
在module_1.js
中未导出,因为{}
告诉引擎仅显式搜索命名导出。import {square} from './module_1.js
这是一个命名导出与默认导出的区别。 export const
是一个命名导出,可以导出一个或多个const声明。
需要强调的是:export
关键字是关键,const
用于声明一个或多个const声明。 export
也可以应用于其他声明,如类或函数声明。
默认导出(export default
)
每个文件只能有一个默认导出。导入时必须指定名称并像这样导入:
import MyDefaultExport from "./MyFileWithADefaultExport";
您可以给它任何名称。
命名导出(export
)
使用命名导出,可以在一个文件中有多个命名导出。然后在大括号中导入您想要的具体导出:
// ex. importing multiple exports: import { MyClass, MyOtherClass } from "./MyClass"; // ex. giving a named import a different name by using "as": import { MyClass2 as MyClass2Alias } from "./MyClass2"; // use MyClass, MyOtherClass, and MyClass2Alias here
或者可以在同一语句中使用默认导出和命名导入:
import MyDefaultExport, { MyClass, MyOtherClass} from "./MyClass";
命名空间导入
还可以在一个对象中导入文件中的所有内容:
import * as MyClasses from "./MyClass"; // use MyClasses.MyClass, MyClasses.MyOtherClass and MyClasses.default here
注意事项
- 语法更喜欢默认导出,因为它们更常见,所以略微更简洁(在此查看讨论)。
-
默认导出实际上是一个名为
default
的命名导出,因此您可以使用命名导入来导入它:import { default as MyDefaultExport } from "./MyFileWithADefaultExport";
注:该段文本中的HTML标签不需要翻译,仅对文本内容进行翻译。