2017-01-09 9 views
2

私は、依存性注入がどこにNode内にあるのか把握しようとしています。私はそれがJavaでどのように動作するかを知っていても、私はそれを周りに頭を上げているように見えることはできませんし、私は無数のブログを読んできました。多くのインポートを持つノードの依存性注入

net imoの例はです。です。 DIが必要な理由を実際には示していません。複雑な例が好きです。

私は、次のフレームワークを見てきた:今

https://github.com/young-steveo/bottlejs

http://inversify.io/

、ノードは、モジュールのパターンを使用しています。私がインポートを行うと、それはノードであるのでシングルトンを受け取ります。ファクトリパターンが新しいインスタンスを返すために使用されない限り、モジュールをキャッシュします(新しいMyThing()を返します)。

依存性注入の主な機能はすべてを切り離すことです。

人がそう言うとき、私は目標が...であるという考えを得ます。すべてモジュールの上からインポートします。私は今日書く方法

'use strict'; 

// node modules 
import os from 'os'; 
...8 more modules here 
import fs from 'fs'; 
// npm modules 
import express from 'express'; 
...8 more modules here 
import _ from 'lodash'; 
// local modules 
import moduleOne from './moduleOne'; 
...8 more modules here 
import moduleTen from './moduleTen'; 

//...rest of my code 

は30回の輸入を持つには、変更する痛みです。同じファイルを複数のファイルに保存することは、さらに大きな苦痛です。

私はhttps://blog.risingstack.com/fundamental-node-js-design-patterns/を読んでいたので、依存性注入領域を調べました。例1では、依存関係が満たされています。何について?それが良い練習になるとは思わない?

非常に多くの依存関係を持つアプリケーションをどのように構造化しますか?そしてユニットテストとモックのためにそれをフレンドリーにしますか?

答えて

0

あなたのプロジェクトの依存関係注入は常に非常に良い選択であるため、IOCパターンを実装します。これにより、ソフトウェアの分割と粒状化が可能になり、柔軟性が増し剛性が低くなります。ノードjsモジュールのパターンは、あなたのコードで抽象化を実装することは非常に難しく、常に良いアーキテクチャーで必要とされ、それを実行し、コードがSOLIDからのD [Dependency Inversion]を満たし、S-O-Iをより簡単に実装できるようにします。

DIのユースケースを見たい場合は、このリポジトリのREADMEもノードJems DIのDIライブラリを参照してください。長いインポートリストをモジュールで無効にします。 DIライブラリに依存する、またはビジネスロジックには必要ない場合がある、モジュールに余分なコードを書くように強制する場合、常にDIライブラリとインスタンスのアクティベーションを抽象化します。