私はJavascript + BackboneJS(MVCフレームワーク)+ RequireJSフレームワークで作業していますが、この質問は多少一般的です。依存性注入対管理依存関係対グローバルオブジェクト
はしばらくの間、これについての私の頭をラッキングされていると私は
私がバックボーンに、あなたのビューは、伝統的なビューとコントローラの組み合わせであることを説明することから始めましょう、とあなたのHTMLテンプレートは、伝統的なMVCのビューです正しい/実践的なアプローチが何であるべきかは不明です。多くのコードに依存するユーザー設定(ユニットシステム、言語選択など)を含むUserオブジェクトがあります。
私のビューの中には、テンプレートを使わずに(マッピングやグラフ作成ライブラリのようなサードパーティ製のライブラリを使用して)ほとんどの作業を行うものがあり、Userオブジェクトに依存してユニット変換、例えば。私は現在、RequireJSを使用して、カプセル化をあまり重くせずにその依存関係を管理しています。
私のビューの中には、自分自身がほとんど仕事をしていないものがあり、モデルデータをテンプレートエンジン/テンプレートに渡すだけで作業を行い、単位変換などのUserオブジェクトに依存します。この依存関係をテンプレートに渡す唯一の方法は、テンプレートにモデルを挿入し、モデルをテンプレートエンジンに渡すことです。
私の質問は、このような広く必要とされる依存関係をどのように最善に処理するかです。 - どこでもアクセス可能なApp-wide参照/グローバルオブジェクトを作成しますか? (YUK) - 一般的には、具体的なオブジェクトではなくクラス/オブジェクト定義の管理依存ロードを使用することが推奨されていますが、RequireJSの管理依存関係を使用します。 - または、依存関係インジェクションを使用して、それを必要とするすべてのものにその依存関係を手動で渡しますか?
遅延を使って非同期に変更される可能性のあるグローバルの前に座って、この問題を緩和するための素晴らしいパターンを見つけることができます –