我真的很困惑:
export const foo
export default foo
module.exports = foo;
我知道这些是非常基本的,但有人可以区分并向我解释这些。我真的很想了解。
答案 0 :(得分:27)
让我们逐一进行。
导出const
export const foo
这是命名导出的ES6导出语法。您可以有许多命名导出。它表示您要导出变量foo
的值,并且您还要在此模块中将该符号声明为const
。
您实际上无法单独使用export const foo
,就像您可以单独使用const foo;
一样。相反,你必须为它分配一些东西:
export const foo = 12;
const
仅适用于模块本身。一旦他们从另一端的模块导入值,它不会影响某人可以对该值执行的操作,因为在另一端(导入的位置),它的值被复制到另一个变量中。如果使用import语句创建了另一个变量,那么无论在导出端声明什么,它都会在导入端自动const
(您无法分配给它)。
这可以作为以下任何一种导入:
import {foo as localFoo} from 'lib';
import {foo} from 'lib';
第一个将模块的foo
属性导入localFoo
命名变量。
第二个将模块的foo
属性导入foo
命名变量。
导出默认
export default foo
这也是ES6语法,并且表示您还希望导出变量foo
的值,并且您希望它是default
导出值,因此如果有人只导入模块而不是任何模块模块的属性,这是他们将得到的变量。每个模块只能有一个default
导出。
在内部,默认导出实际上只是指定了特殊名称default
的命名导出:
import localVar from 'myLib';
这将从myLib获取default
导出,并将其值分配给名为localVar
的本地声明的变量。以上是此的简写:
import { default as localVar } from 'lib';
因此,default
导出只允许您为一个特定导出导入快捷方式。 ES6导入/导出语法旨在使默认导入/导出的语法尽可能简短。但是,由于显而易见的原因,每个模块只有一个默认属性。
<强> module.exports 强>
// inside of myModule
module.exports = foo;
这是用于导出变量foo
的值的node.js语法,您将其导出到顶层。当有人使用这个模块时:
let x = require('myModule');
console.log(x); // will show the value of `foo` from the previous module
这不是ES6语法,而是使用node.js中内置的module.exports
和require()
基础结构的常规ES5兼容语法。
答案 1 :(得分:2)
export语句用于从给定文件(或模块)导出函数,对象或基元。
命名导出 这是ES6 javascript中的命名导出
export const foo
导入如:
import { foo } from 'path'
默认导出 这是默认导出(可以使用任何名称导入)
export default foo
导入如下:
import bar from 'path'
这是在nodejs程序中使用的commonjs export。
module.exports = foo;
导入如:
var foo = require('path')
more详细信息
答案 2 :(得分:0)
export const foo:导出常量(ES6) export default foo:exports object(ES6)
以上陈述是ECMA Script 2015(又名ES6)实施。
在普通的ES6 JS文件中,可以导出任何对象(变量)或常量。请注意,您不能更改常量引用,但内部结构可以修改(奇怪)。
在ES6中,可以在模块(脚本文件)中有多个导出。可以在调用脚本中添加
import {Obj1, Obj2} from module_file
即将导出默认值,模块中只能有一个导出默认值。当导入未定义确切名称时,默认值已被选中。
module.exports = foo;是较旧的实现,它与导出默认值相同。除了使用require语句而不是import
导入更多参考https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export