export const foo,export default foo和module.exports = foo之间的区别

Ben*_*Max 24 javascript node.js

我真的很困惑:

  1. export const foo
  2. export default foo
  3. module.exports = foo;

我知道这些是非常基本的,但有人可以区分并向我解释这些.我真的很想了解.

jfr*_*d00 31

让我们逐一进行.

出口常数

 export const foo
Run Code Online (Sandbox Code Playgroud)

这是命名导出的ES6导出语法.您可以有许多命名导出.它表示您要导出变量的值,foo并且您还声明该符号const位于此模块中.

你实际上不能单独使用export const fooall就像你可以单独使用all一样const foo;.相反,你必须为它分配一些东西:

export const foo = 12;
Run Code Online (Sandbox Code Playgroud)

将const仅适用于该模块本身.一旦他们从另一端的模块导入值,它不会影响某人可以对该值执行的操作,因为在另一端(导入的位置),它的值被复制到另一个变量中.如果使用import语句创建了其他变量,那么const无论在导出端声明什么,它都会自动在导入端(您无法分配).

这可以作为以下任何一种导入:

import {foo as localFoo} from 'lib';
import {foo} from 'lib';
Run Code Online (Sandbox Code Playgroud)

第一个foo将模块的属性导入localFoo命名变量.第二个foo将模块的属性导入到foo命名变量中.


出口默认

export default foo
Run Code Online (Sandbox Code Playgroud)

这也是ES6语法,并且表示您还希望导出变量的值,foo并且您希望将其作为default导出值,因此如果有人仅导入模块而不导入模块的任何属性,则这是他们将获得的变量.default每个模块只能有一个导出.

在内部,默认导出实际上只是一个指定了特殊名称的命名导出default:

import localVar from 'myLib';
Run Code Online (Sandbox Code Playgroud)

这default将从myLib 获取导出并将其值分配给名为的本地声明的变量localVar.以上是此的简写:

import { default as localVar } from 'lib';
Run Code Online (Sandbox Code Playgroud)

因此,default导出只允许您为一个特定导出导入快捷方式.ES6导入/导出语法旨在使默认导入/导出的语法尽可能简短.但是,由于显而易见的原因,每个模块只有一个默认属性.


module.exports

// inside of myModule
module.exports = foo;
Run Code Online (Sandbox Code Playgroud)

这是node.js语法,用于导出变量的值,foo并在顶层导出它.当有人使用此模块时:

let x = require('myModule');
console.log(x);    //  will show the value of `foo` from the previous module
Run Code Online (Sandbox Code Playgroud)

这不是ES6语法,而是使用常规ES5兼容的语法module.exports和require()基础设施建设成为node.js中


Amr*_*pal 5

导出语句用于从给定文件(或模块)导出函数、对象或基元。


命名导出 这是 ES6 javascript 中的命名导出

export const foo
Run Code Online (Sandbox Code Playgroud)

其导入方式如下:

import { foo } from 'path'
Run Code Online (Sandbox Code Playgroud)

默认导出 这是默认导出(可以使用任何名称导入)

export default foo
Run Code Online (Sandbox Code Playgroud)

其导入方式如下:

import bar from 'path'
Run Code Online (Sandbox Code Playgroud)

这是在nodejs程序中使用的commonjs导出。

module.exports = foo;

其导入方式如下:

var foo = require('path')
Run Code Online (Sandbox Code Playgroud)

更多细节​