2017-07-10 9 views
1

私たちのJavaScriptアーキテクチャを近代化したいと思います。さらに重要なのは、JavaScriptコードの単体テストを書くことです。javascript:require()モジュールへのグローバルオブジェクトのリファクタリング

私はさまざまな質問/ブログから情報をつなぎとめており、暫定的な計画を立てています。しかし、私が正しい軌道にいるかどうかは確かではありません。エクスポートされたモジュールの代わりにグローバルオブジェクトとして

  1. リファクタリング成分:

    計画。

  2. にすべてのファイル/コンポーネントが必要なエントリポイント(index.js?)を作成します()。
  3. ユーザーブラウザ対応の静的ファイルを作成するためにブラウジングします(グローバルに戻る)。
  4. node、mocha、&チャイを使用して、npmテストを実行して、エクスポート可能なコンポーネントを参照するテストを実行します。

リファクタリング:

グローバルオブジェクト:

// myProject.js 
// -------------------- 
var MyProject = {}; 

// component1.js 
// -------------------- 
myProject.component1 = {}; 

は、(必要とする)モジュール:

// myProject.js 
// -------------------- 
var component1 = require('./component1'); 
modules.export = { component1 }; 

// component1.js 
// -------------------- 
var component1 = {}; 
modules.exports = component1; 

質問:

プロジェクトがグローバルオブジェクトを使用している場合名前空間コンポーネント、これらのJavaSをどのようにリファクタリングできるかノードで動作するモジュールをエクスポートするためのcriptファイル?上記の計画はJavaScriptの依存関係/モジュールの最新の標準に従っていますか?

私の主な関心事は、index.js(またはメインエントリ)ファイルがメンテナンスの悪夢になることです(すべての新しいファイルをrequire()として追加します)。

+1

あなたの 'index.js'は、(トップレベルのコンポーネントのような)コアのエントリーポイントしか必要としません。他のファイルは間接的に必要となります。 – SLaks

+0

それは、それを指摘してくれてありがとう、たくさんの意味があります。 require()を初めて使うことで、私はすべての要素を沸騰させることに頼ることさえできませんでした。ありがとうございましたx1000 – veratti

答えて

1

index.jsには、コアエントリポイント(最上位コンポーネントなど)のみが必要です。

その他のファイルは間接的に必要となります。

したがって、のすべてのファイルのうち、の巨大なリストはありません。各ファイルは、直接使用するものだけを必要とする必要があります。

Browserifyはすべてのrequire()dファイルの推移的クロージャをアセンブルします。

+0

これを投稿していただきありがとうございます - これは私の主な関心事を解決しました。あなたの意見では、私の計画の残りの部分が他の箇条書きで固まっていることを意味するために、これを取ることができますか?私は任意の提案/批判に開放されています - 早ければ良いです:) – veratti

+0

'myProject.js'は何もエクスポートしてはいけません。 – SLaks

+0

私が正しく理解していれば、myProject.jsはindex.jsで効果的に置き換えることができます。以前の目的は、他のすべてのオブジェクトを1つの名前空間にまとめることだけだったからです。本当ですか? – veratti

関連する問題