2017-07-18 53 views
0

在Node.js中從模塊中導出函數的語法是什麼?在Node.js中從模塊中導出函數的語法是什麼?

function foo() {} 
function bar() {} 

export foo; // I don't think this is valid? 
export default bar; 
+1

可能的複製[什麼是「出口默認「在JavaScript?](https:// stackoverflow。com/questions/21117160/what-is-export-default-in-javascript) – Erazihel

+1

絕對不是重複的。這是當前Node構建中的功能支持問題。什麼是降薪,人們? – slezica

回答

3

在節點導出事情module.exports特殊對象。例如:

該出口兩種功能:

module.exports = { foo, bar }; 

它們可以被用來作爲:

const { foo, bar } = require('./module/path'); 

要導出的這些功能作爲頂級對象一個你可以使用:

module.exports = foo; 
module.exports.bar = bar; 

它可以用作:

const foo = require('./module/path'); 

和:

const { bar } = require('./module/path'); 

或:

const foo = require('./module/path'); 
const { bar } = foo; 

或:

const foo = require('./module/path'); 
const bar = foo.bar; 

這是「的語法從模塊導出的函數在Node.js中「問題 - 即Node本地支持的語法。節點不支持import/export語法(請參閱this以瞭解原因)。由於slezica在下面的評論中指出,您可以使用像Babel這樣的轉譯器將import/export關鍵字轉換爲Node可以理解的語法。

見這些問題的答案以獲得更多信息:

+0

啊,謝謝。同樣的ES2015模塊語法是什麼? – Ben

+1

這是Node開始支持'import' /'export' ES6語法的唯一方法,**它目前不支持**。你也可以使用Babel,安裝'babel-cli'和'babel-preset-latest'作爲開發依賴項,然後預編譯你的javascript或運行'babel-node'。我爲我的所有項目都這樣做 – slezica

1

以暴露foo和bar功能:

module.exports = { 
    foo: function() {}, 
    bar: function() {} 
} 
1

你也可以做到這一點的更短的形式

// people.js 
function Foo() { 
    // ... 
} 

function Bar() { 
    // ... 
} 

module.exports = { Foo, Bar} 

導入:

// index.js 
const { Foo, Bar } = require('./people.js'); 
0
export function foo(){...}; 

或者,如果功能已申報早些時候:

export {foo}; 

參考:的MDN export

相關問題