私は開発のためにangular2 in-memory-web-api
を使用しています。実稼働環境では、in-memory-web-apiと私の実際のAPIを使用不可にします。プロダクション用にInMemoryWebApiModule
を無効にする方法はありますか?生産のためにangular2 in-memory-web-apiを無効にする
答えて
ノードスイッチENVへの角型CLI environment
であれ、何らかの「スイッチ」があると仮定すると、どちらを使用するかを切り替えることができます。 in-memory-web-api
は、独自のバックエンドInMemoryBackendService
を使用します。だから、ここで
import { NgModule, Injector } from '@angular/core';
import { HttpModule, XHRBackend, BrowserXhr,
ResponseOptions, XSRFStrategy } from '@angular/http';
import { InMemoryBackendService, InMemoryDbService } from 'angular-in-memory-web-api';
let environment = {
production: true
};
export class MockData implements InMemoryDbService {
createDb() {
let cats = [
{ id: 1, name: 'Fluffy' }
];
return { cats };
}
}
@NgModule({
imports: [ HttpModule ],
providers: [
{
provide: XHRBackend,
useFactory: (injector: Injector, browser: BrowserXhr,
xsrf: XSRFStrategy, options: ResponseOptions): any => {
if (environment.production) {
return new XHRBackend(browser, options, xsrf);
} else {
return new InMemoryBackendService(injector, new MockData(), {
// the configuration object
});
}
},
deps: [ Injector, BrowserXhr, XSRFStrategy, ResponseOptions ]
}
]
})
export class AppHttpModule {
}
、我々はその後、動的XHRBackend
依存関係を作成し、HttpModule
を輸入しているような何かを行うことができます。開発環境では、バックエンドサービスを使用します。これは、実際にはInMemoryWebApiModule
を使用すると起こります。したがって、そのモジュールを使用する代わりに、バックエンドサービスを自分で設定するだけです。また、実稼働環境では、通常使用される同じXHRBackend
を使用します。
environment
にも注目してください。これは単なる例です。これはおそらくあなたによって使用されません。理想的には、環境はコマンドラインで制御されるものでなければなりません。 Angular CLIの場合、実際ににあるenvironment
という変数があります。プロダクションビルドでは、CLIによって環境が自動的に切り替わります。
CLIを使用していない場合は、ノードENVを使用するか、スイッチの生産計画を立てることができます。要点は、上記のenvironment
は単なる例にすぎません。理想的には、これはあなたが手動で変更しなければならないものではありません。プロジェクトでは、プロダクションビルドを決定するための何らかの方法が必要です。これはコード内でアクセスできる必要があります。
また、上記AppHttpModule
で、あなたはもはや単なるAppHttpModule
このシンプルなアプローチをインポートし、あなたのAppModule
にHttpModule
をインポートする必要がありませんが私の作品:
const ENV = 'prod'; // your global ENV variable;
-----
@NgModule({
imports: [
...
HttpModule,
ENV !== 'prod' ? InMemoryWebApiModule.forRoot(DataMockService) : [],
],
...
})
export class AppModule {}
同じ方法:
import { environment } from './app.constants';
let myTestApiModule = [];
if (!environment.production) {
myTestApiModule.push(InMemoryWebApiModule.forRoot(InMemDataService,
{ delay: 500 })
);
}
imports: [
CommonModule,
SharedModule,
...myTestApiModule,
],
'{delay:500}'とは何ですか? –
コールAPIの遅延です。たとえば、http.get(...)を実行すると、500msでポーズした後に結果が得られます。実際のサーバーや悪いネットワークをエミュレートするための人工的な遅延だけでなく、非同期コードの動作をテストします。 –
- 1. Chromeの反応を無効にする生産のためのDevTools
- 2. Angular2生産AOT
- 3. 流星生産アプリケーションでコンソール例外を無効にする
- 4. 生産用Webpackでホットモジュール交換を無効にする方法
- 5. angular2コンポーネントを無効にする方法
- 6. Angular2のhttpキャッシュを無効または空にする
- 7. 生産のために角度2を配備する
- 8. Pythonはウェブブラウザを無効にするために無効にします。
- 9. Angular2で一度クリックしたボタンを無効にする
- 10. 生産にログインするためのAndroidツール
- 11. 生産のために活動を続けているElixir Phoenix
- 12. EF6は生産に配備するためのシードデータを生成します
- 13. ページキャッシュを有効にするためのフラッシュ[:notice]の無効化
- 14. Angular2 HTTPレスポンスでformcontrolを有効/無効にする
- 15. 生産のためのRailsパフォーマンスチューニング?
- 16. 生産のための角度ビルド
- 17. 生産のためのプレアクトとウェブパック
- 18. Androidでウェブビューを有効/無効にするためのベストプラクティス
- 19. Angular2 - フォームが無効です
- 20. Railsの生産ではJavaScriptエラー:「割り当てに無効な左辺」
- 21. 無効なルーティングのため、スプリングルーティングで404エラーが発生する
- 22. 生産のためにUbuntuサーバーにNode JSベースのAPIをデプロイする方法
- 23. 生産のための角度コードを最小限にするには?
- 24. 生産中のNelmio UIを無効にするにはどうすればいいですか?
- 25. Angular2フォームデータバインド値を持つコンポーネントのコントロールを無効にする
- 26. Angular2/Ionic2の編集でマークアップの一部を無効にする
- 27. Angular2のReactives FormModule内のFormGroupコントロールを無効にする
- 28. サードパーティライブラリのangular2変更の検出を無効にする方法
- 29. ストレージデバイスを無効にして有効にするためのサードパーティ製のツールに
- 30. ファイルアップロード(Node.js)のためにExpress BodyParserを無効にする方法
これは素晴らしい例です。本当に物事を簡素化する手助けをしています。私はブラウザの引数が何をするかに従っていない。 – Winnemucca
@Winnemuccaこれは、XHRBackendに必要なすべての依存関係です。あなたはそれが何であるかを知らないかもしれませんが、それは必要なものです。私はXHRBackendのソースを見て、それが必要であることを見たので、それを依存関係として追加しました。 ResponseOptionsとXSRFStrategyと同じです。私はあなたにバックエンドが使っているものを正確に伝えることはできませんが、興味があれば、バックエンドのソースコードを見てください。私はこれを作るだけではありませんでした。バックエンドには、作成するかどうかにかかわらず、これらのものが必要です。 –
https://github.com/angular/angular/tree/master/packages/http/src/backends –