私は、RESTサービスを使用するAngularJSシングルページアプリケーションで作業しています。フロントエンドアプリケーションはバックエンドとは別に開発されているため、開発中にAJAX呼び出しのURLにドメイン名をハードコードする必要があります(CORSを有効にしています)。しかし、制作の場合、すべてが同じドメインで実行されているため、ドメイン名をハードコーディングするのは少し悪く見えます。開発中にajax呼び出し用のURLにドメイン名を使用できますか?本番環境ではドメイン名をハードコードしませんか?私はギャルプを使用しています。angularjsで開発と生産に異なるドメインを使用する
答えて
$http
でgulp-ng-constantの使用例:あなたのサービスがbaseUrl
を取得するために使用アプリケーション内の定数:gulpfile.js
で
次のタスクの内容angular.module('globals', []).constant('apiContextPath', '...');
でファイルtarget/build/scripts/_config.js
を生成します。もちろん、あなたの(縮小さ/パック)で生成されたファイルをインクルードする必要があり
gulp.task('app.ngconstant', [], function() {
var ngConstant = require('gulp-ng-constant'),
var rename = require('gulp-rename');
return
ngConstant({
constants: {
apiContextPath: '.' // TODO Devise a way to set per environment; eg command line
},
name: 'globals',
stream: true
})
.pipe(rename('_config.js'))
.pipe(gulp.dest('target/build/scripts'));
});
コード。次のコードに沿って
何かが'/api/'
で始まるすべてのリクエスト(つまり、私たちのRESTエンドポイント)へapiContextPath
を付加する$httpProvider
を設定します:
angular.module(...).config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['globals', function(globals) {
return {
'request': function(config) {
if(config.url.indexOf('/api/') === 0) {
config.url = globals.apiContextPath + config.url;
}
return config;
}
};
}]);
}]);
(かなりの数の他の設定オプションがありますので、この
まだ作成していない場合は、gulpビルドにパラメータを渡して、本番モードまたは開発モードでビルドすることができます。そして、あなたが持っている可能性が
'window.baseUrl = ' + baseUrl
:あなたの角度スクリプトのすべての前に構築し、あなたのjavascriptに(gulp-insert
を使用して)スクリプトを含めるために使用されているあなたのgulpfileでbaseUrl
プロパティを設定することができ、そのフラグに基づいて
angular.module('YourModule').constant('baseUrl', window.baseUrl);
この場合、開発中にCSS /画像も別のドメインから取得しますか?私はcss/imagesをローカルマシンからロードするだけで、AJAX呼び出しは異なるドメインにヒットする必要があります。 – VJAI
あなたのアプリケーションでどこでも 'baseUrl'を使うことができます。あなたが望む場合を除き、イメージの読み込みには影響しません。あなたのサービスでは、それを挿入して、 '$ http.get(baseUrl + '/ api/endpoint')のようなURLを構築することができます。 – DerekMT12
そこに問題があります。現在、たくさんのファイルに大量のURLがあり、それぞれを移動してbaseurlを前に変えるのはかなり難しいです。 – VJAI
- 1. テストと開発と生産でレールが異なる結果になる
- 2. 開発と生産のための異なるURL
- 3. 開発と生産のために異なるドッカーファイルを構成する方法
- 4. 角度2のindex.html - 異なる開発・生産
- 5. GWT - Log4j - 開発と生産
- 6. ドッカーは、開発と生産
- 7. dev/staging/productionに異なる<base>を設定する正しい方法は、開発者用と生産用に異なる(プロダクション用にはサブフォルダです)
- 8. rvmのリストは、開発と生産の間で異なります
- 9. Railsのルートが開発と生産の点で異なります
- 10. 生産と開発のドッカーの違いを使用して
- 11. セロリを開発および生産用に分離する
- 12. 生産と開発の設定ファイルを交換するには?
- 13. ジキルハイライト開発対生産
- 14. Php.iniの生産対開発
- 15. 開発工事はなく、生産
- 16. 開発/生産の可能なサーバー/グループ
- 17. フラスコの生産と開発のモード
- 18. VSTS:ブランチとマージベスト開発アプローチ - QA - 生産
- 19. 生産と開発のlog4net設定は?
- 20. React Native:開発と生産的なモードでAPI URLを取得
- 21. Carrierwaveでの生産と開発にさまざまなS3バケットを使用する
- 22. 開発用テスト用のTomcatと生産用のWebsphere
- 23. 同じ開発シードファイルを使用したシードレールの生産?
- 24. 開発と生産でS3にアップロードするPaperclipを取得する
- 25. webpack - 生産環境と開発環境に異なる変数を持たせる方法
- 26. 生産と開発を区別する単一のhtaccessファイル
- 27. Laravel開発と生産の間で普遍的な
- 28. どのようにnodejの生産と開発のための異なる環境を設定しますか?
- 29. 生産と開発にはどのノードモジュールが必要ですか?
- 30. Rails 5(minitest)は、生産と開発とは異なるテスト値を扱います。
私は[gulp-ng-constant](https://github.com/guzart/gulp-ng-constant)をいくつかの機会に使っています。次に、 "API URL"(gulp-ng-constantで設定されている)を前に置く '$ http' [インターセプタ](https://docs.angularjs.org/api/ng/service/$http#interceptors)を実装します。 HTTPコールに送信します。 –
それは私にとって素晴らしいアイデアのように思えます。私はそれを試みます。 – VJAI
あなたが回答として投稿した場合、私はupvoteまたは回答として受け入れることができます。 – VJAI