[英]const foo = module.exports = yadablah(){}; Why the const foo before module.exports?
[英]Difference between export const foo, export default foo and module.exports = foo
我真的很困惑:
export const foo
export default foo
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.exports
和require()
基礎結構的常規ES5兼容語法。
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.