2016-12-03 63 views
3

在Node.js中創建具有多個被稱爲「靜態」功能(即不使用關鍵字new)的模塊時,使用哪種模式更好。我錯過了ES6中的等價物嗎?node.js模塊應該導出命名函數還是對象?

格局1,

// math.js 
module.exports.add = (x, y) => { 
    return x + y; 
} 

module.exports.multiply = (x, y) => { 
    return x * y; 
}; 

// app.js 
const math = require('./math.js'); 
console.log(math.add(2, 3)); 

模式2.

// math.js 
module.exports = { 
    add: (x, y) => { 
     return x + y; 
    }, 
    multiply: (x, y) => { 
     return x * y; 
    } 
}; 

// app.js 
const math = require('./math.js'); 
console.log(math.add(2, 3)); 
+1

您的兩種模式對於所有意圖和目的都完全相同。 – 2016-12-03 13:22:31

回答

4

默認module.exports是一個空的對象。所以,你們兩種模式的結果確實沒有什麼區別。

你的第一種模式是隻添加一個方法到默認的空對象。

您的第二種模式是創建一個新對象,添加方法,然後用您的新對象替換默認module.exports對象。

哪個是更好的模式生成的Node.js 模塊時有被稱爲「靜態的」,即不 使用new關鍵字多種功能使用。

結果是相同的任何一種方式,它只是一個編碼風格偏好的問題,你喜歡哪種方式來編寫代碼。

在ES6中有沒有相當於我失蹤?

ES6並沒有真正引入新的東西。你只是定義一個對象的屬性。

0

我想有沒有 「正確的方式」 或 「正確的方式」 了點。在這兩種情況下,你都是講同樣的事情。你只是寫它有點不同。兩者都將被轉換爲一個對象並由其他模塊導入。

這就是說,我喜歡第二個。它給了我更好的「捆綁」感。

我會的,不過,進口爲

import { add, multiply } from './math' 
+0

使用'import'而不是'require'有什麼好處? – Justin

+0

'import'在ES6中引入,並且允許您使用這些:'{field1,field2}',它比'const field1 = require'('library.field1')稍微簡單一些。 const field2 = require('library.field2')' –