2017-03-14 14 views
0

私は自分のアプリケーション用に一連のユーティリティを構築しています。私はモジュール内で互いに独立したとして、ユーティリティ機能を作成する必要がどこES2015を使用して、私はメインのオブジェクトを作成する昔ながらの方法を行くための任意の必要がある、ALA =>モジュール時代のAPIでプロトタイプを使用する必要があります

export const doSomething =() => { 
... } 

export const doSomethingElse =() => { 
... } 

私の質問があり、不思議&そのオブジェクトをすべてのユーティリティ関数で拡張しますか?アラ=>

export const mainObj = function(){ 
... } 

mainObj.prototype.doSomething = function(){ 
... } 

mainObj.prototype.doSomethingElse = function(){ 
... } 

感謝

+1

なぜそれらをプロトタイプに追加しますか?なぜ、それらをメインオブジェクトのプロパティにしないのですか? 'mainObj.method' – evolutionxbox

+0

それはうまくいくでしょう。問題は、残りのすべての変数が等しいとすれば、あるパターンを別のパターンに優先させるべきかどうかです。 – Kayote

+0

[この質問](http://stackoverflow.com/questions/38340500/export-multiple-classes-in-es6-modules)は役に立ちますか? – evolutionxbox

答えて

1

/揺れツリーを使用することができるツールを構築する:

これはフリー機能を公開I通常構造のモジュールがどのようです。これは、最終的なスクリプトから未使用の機能を除外し、コードサイズを縮小することです。

プロパティを動的に参照できるため、オブジェクトをエクスポートするときにこれは不可能(少なくとも難しい)です。だから、ツールは、関数が使用されるかどうかを確かめることはできません。

オブジェクトが好きな場合は、常にimport *でも同様の効果がありますが、ツリーの揺れを防ぐことができます。

+0

それは素晴らしい点です。そして、私がWebpackを使用しているので、それは理にかなっています。私は古い方法にまだ利点があるかどうかを知りたいと思っていました。 – Kayote

0

あなたはいくつかの方法でこれを行うことができます。プロトタイプを操作することは、きっときれいな方法ではありません。あなたはおそらく単純なオブジェクトORクラスを必要とします。あなたが個別その後、バンドラの機能をエクスポートする場合

// Either 
const foo = function foo (...args) { 
    return args; 
}; 

module.exports = { 
    foo 
    // … 
}; 

// Or if you do not need to reference other functions in 
// the same module 
module.exports = { 
    foo (...args) { 
    return args; 
    } 
    // … 
}; 
+0

なぜクラスですか?ちょうど興味深い... – evolutionxbox

+0

ES6にはクラスがあるので、プロトタイプやプロトタイプの継承を処理する標準的な方法もあります。これはESにとって大きな前進であり、可能であれば受け入れるべきです。 –

+0

あなたはES6クラスがプロトタイプの継承の構文砂糖であることを知っていますか? – evolutionxbox

関連する問題