クライアント側で利用可能な構成ファイルを維持するための一般的に受け入れられているベスト プラクティスはありますか (ASP.NET アプリケーションのサーバー側の AppSettings セクションに相当するもの)?
私たちのアプリケーションは Angular に基づいています。環境固有の設定 (リモート システムの URL など) をコード自体から外部化して、理想的には開発者ではなく運用担当者が 1 か所で設定を変更できるようにすることが私たちの望みです。
洞察を事前にありがとう!
クライアント側で利用可能な構成ファイルを維持するための一般的に受け入れられているベスト プラクティスはありますか (ASP.NET アプリケーションのサーバー側の AppSettings セクションに相当するもの)?
私たちのアプリケーションは Angular に基づいています。環境固有の設定 (リモート システムの URL など) をコード自体から外部化して、理想的には開発者ではなく運用担当者が 1 か所で設定を変更できるようにすることが私たちの望みです。
洞察を事前にありがとう!
AngularJS アプリを開発するときに config.js ファイルを使用するのは良い考えではないと思います。その理由は、自動テストの可能性を壊してしまうからです。
代わりに、アプリ固有のコンテキストを指定する「設定」サービスを作成します。例えば:
angular.module('settings',[]).factory('SettingsService',function(){
var service={};
// Insert your settings here
service.ServerPath = 'whateverwhatever';
service.ImagePath = 'bla bla bal';
return service;
});
次に、設定へのアクセスが必要なコントローラーに SettingsService を挿入します。
もちろん (ここでは簡単にするために省略しました)、代わりに ServiceService を空の本体で作成し、アプリケーションの .run() メソッドでサーバーから設定をフェッチすることもできます。
説明した簡単な方法を使用し、展開の種類 (「開発」、「テスト」、「運用」など) ごとに SettingsService を維持します。次に、ターゲットに応じてビルド スクリプトに適切な SettingsService を含めます (私は Grunt を使用しますが、Ant も使用できます)。
私はこれと同じジレンマを抱えており、現在私が頼っているのは、config-local.js、config-staging.jsなどの一連の構成ファイルがあります。次に、config.jsへのシンボリックリンクをどこにでも作成しますアプリを実行したい。ローカル デスクトップでは、config-local.js にシンボリック リンクを作成し、ステージング環境では、config-staging.js にシンボリック リンクを作成します。次に、config.js を .gitignore に入れます。
長所:それは動作します。短所: アプリが正しく動作する前に、シンボリック リンクの作成が必要です。
将来: symlink を作成するタスクを grunt に追加するかもしれません。
これに対する答えは、アプリケーションの全体的な構造で角度レイヤーをどのようにセットアップするかに大きく依存していると思います。
たとえば、ベース サーバー アプリケーション (Grails、node.js、RoR) から各環境に対して同じ方法で角度アプリケーションを提供しましたが、角度アプリケーションは常に同じコード ベースです。これは、角度に供給するデータが制御されているためです。サーバー側で、Angular 呼び出しはすべてベース URL に対して相対的です。言い換えれば、Angular アプリケーションを提供するサーバー アプリを介してすべてのデータをプロキシするので、Angular アプリはすべて独自の URL を「認識」します。
他のサービスを直接呼び出していて、ベース サーバー アプリケーションを使用してデータをプロキシしていない場合でも、サーバーを使用して、アプリケーションのサーバー側の構成に応じて URL をフィードできる可能性があります。この場合、これらの構成値をいつでも DB テーブルに保存できるため、その場で変更することができます。