2016-12-03 10 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

あなたの2つのパターンは、すべての意図と目的でまったく同じです。 –

答えて

4

として空のオブジェクトです。だから、あなたの2つのパターンの間には結果に違いはありません。

最初のパターンは、デフォルトの空のオブジェクトにメソッドを1つずつ追加することです。

2つ目のパターンは新しいオブジェクトを作成し、そのオブジェクトにメソッドを追加してから、デフォルトのmodule.exportsオブジェクトを新しいオブジェクトに置き換えます。 「静的」、すなわち新しいキーワードを使用していない と呼ばれている複数の機能を持っているNode.jsの 内のモジュールを作成するときに使用するためのより良いパターンです

結果はどちらの場合も同じで、コードを書く方法を示すコーディングスタイルの優先順位の問題にすぎません。

ES6に相当するものがありますか?紛失していますか?

ES6では実際にこれについて新しいものは紹介していません。あなたはオブジェクトのプロパティを定義するだけです。

0

私は "正しい方法" またはそのための "正しいパターン" がないと思います。どちらの場合も、ほとんど同じことを言っています。あなたはそれをちょっと書いているだけです。どちらもオブジェクト内で変換され、他のモジュールによってインポートされます。

言われているように、私は第2のものが好きです。それは私に良い "束縛"の感覚を与える。

私はだろう、しかし、輸入デフォルトmodule.exportsことで

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

'require'より' import'を使う利点は何ですか? – Justin

+0

'import'はES6で導入されたもので、' {field1、field2} 'を使うことができます。これは' const field1 = require( 'library.field1')より少しシンプルです。 const field2 = require( 'library.field2') ' –

関連する問題