簡體   English   中英

export const foo,export default foo和module.exports = foo之間的區別

[英]Difference between export const foo, export default foo and module.exports = foo

我真的很困惑:

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

我知道這些是非常基本的,但有人可以區分並向我解釋這些。 我真的很想了解。

讓我們逐一進行。

出口常數

 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';

這將得到default mylib中的出口和分配給它的價值給名為本地聲明的變量localVar 以上是此的簡寫:

import { default as localVar } from 'lib';

因此, default導出只允許您為一個特定導出導入快捷方式。 ES6導入/導出語法旨在使默認導入/導出的語法盡可能簡短。 但是,由於顯而易見的原因,每個模塊只有一個默認屬性。


module.exports

// inside of myModule
module.exports = foo;

這是node.js語法,用於導出變量foo的值,並在頂層導出它。 當有人使用此模塊時:

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

這不是ES6語法,而是使用node.js中內置的module.exportsrequire()基礎結構的常規ES5兼容語法。

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')

有關詳細信息

export const foo:exports constants(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM