今回は、Angular HMR) 関数の実装方法と、Angular HMR) 関数を実装する際の注意事項について説明します。以下は実践的なケースです。
最近同僚が Angular を使用していたとき、コードを変更した後にブラウザが更新されず、変更されたコンポーネントに応じてページが自動的に更新する VUE のような機能が欲しいと考えていました。この機能の名前はHMR(ホットモジュールリプレース)です。
少し調べたところ、angular/cli で作成したプロジェクトにこれを実装するのはそれほど難しくないことがわかりました。手順は次のとおりです。 1. まず src/environments/environment.hmr.ts ファイルを作成します。次の内容ですexport const environment = { production: false, hmr: true };
state が確実にきれいになるため、environment.ts の hmr を false にします。
2. json ファイル hmr 環境を次のように追加します。"environments": { ... "hmr": "environments/environment.hmr.ts", }
hrreee
4.hmr モジュールをインストールします。 コマンドは次のとおりです。 : "scripts": {
...
"hmr": "ng serve --hmr -e=hmr"
}
npm install --save-dev @angularclass/hmr
これは、交換後に元のブートストラップを置き換えるキーです (以下に示すように)。モジュールが更新されると、hmr は最初に古いモジュールを削除し、次に新しいモジュールを受信します。これらはすべてブラウザ内で行われます。したがって、ページは更新されません。
6. srcmain.ts ファイルを次のように更新します。
import { NgModuleRef, ApplicationRef } from '@angular/core'; import { createNewHosts } from '@angularclass/hmr'; export const hmrBootstrap = (module: any, bootstrap: () => Promise<NgModuleRef<any>>) => { let ngModule: NgModuleRef<any>; module.hot.accept(); bootstrap().then(currentModule => ngModule = currentModule); module.hot.dispose(() => { const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef); const elements = appRef.components.map(c => c.location.nativeElement); const removeOldHosts = createNewHosts(elements); ngModule.destroy(); removeOldHosts(); }); };
ここを置き換えるには、hmr に設定されている場合は hmrBootStrap を呼び出して Web ページを開始する必要があります。それ以外の場合は、過去の
7 を使用します。ここで npm run hmr または ngserve --hmr -e=hmr を実行すると、ホットリプレース機能が実現されます。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
一般的に使用される完全な JS ソート アルゴリズム React Native を使用してフローティング ボタン コンポーネントを作成する方法以上がAngular HMR) 関数の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。