[解決済み] [Solved] Angular.jsで異なる環境を設定するには?
2022-04-07 13:28:08
質問
異なる環境の設定変数/定数をどのように管理するのですか?
これは一例と言えるでしょう。
私のレストAPIは
localhost:7080/myapi/
しかし、Git バージョン管理下で同じコードに取り組んでいる私の友人は、API を彼の Tomcat 上で
localhost:8099/hisapi/
.
仮にこのようなものがあったとして :
angular
.module('app', ['ngResource'])
.constant('API_END_POINT','<local_end_point>')
.factory('User', function($resource, API_END_POINT) {
return $resource(API_END_POINT + 'user');
});
環境に応じて、APIエンドポイントの正しい値を動的に注入するにはどうすればよいですか?
PHPでは、通常このようなことは
config.username.xml
基本設定ファイル (config.xml) とユーザー名で認識されるローカル環境設定ファイルをマージしています。しかし、JavaScriptでこのようなことを管理する方法がわからないのですが?
どのように解決するのですか?
ちょっとスレッドが遅れてしまいましたが、もしあなたが
グラント
で大成功を収めました。
grunt-ng-constant
.
のコンフィグセクションは
ngconstant
私の
Gruntfile.js
は次のようになります。
ngconstant: {
options: {
name: 'config',
wrap: '"use strict";\n\n{%= __ngModule %}',
space: ' '
},
development: {
options: {
dest: '<%= yeoman.app %>/scripts/config.js'
},
constants: {
ENV: 'development'
}
},
production: {
options: {
dest: '<%= yeoman.dist %>/scripts/config.js'
},
constants: {
ENV: 'production'
}
}
}
を使用するタスクは
ngconstant
のように見えます。
grunt.registerTask('server', function (target) {
if (target === 'dist') {
return grunt.task.run([
'build',
'open',
'connect:dist:keepalive'
]);
}
grunt.task.run([
'clean:server',
'ngconstant:development',
'concurrent:server',
'connect:livereload',
'open',
'watch'
]);
});
grunt.registerTask('build', [
'clean:dist',
'ngconstant:production',
'useminPrepare',
'concurrent:dist',
'concat',
'copy',
'cdnify',
'ngmin',
'cssmin',
'uglify',
'rev',
'usemin'
]);
ということで、実行中
grunt server
を生成します。
config.js
のファイルを
app/scripts/
のようになります。
"use strict";
angular.module("config", []).constant("ENV", "development");
最後に、必要なモジュールに依存することを宣言します。
// the 'config' dependency is generated via grunt
var app = angular.module('myApp', [ 'config' ]);
これで、私の定数は必要なところに依存性注入ができるようになりました。例えば
app.controller('MyController', ['ENV', function( ENV ) {
if( ENV === 'production' ) {
...
}
}]);
関連
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] GUID / UUIDの作成方法
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Vueが定義されていない