首页 > 语言 > JavaScript > 正文

详解Angular6 热加载配置方案

2024-05-06 15:31:24
字体:
来源:转载
供稿:网友

Angular6 热加载配置方案,分享给大家,具体如下:

示例 ng 版本如下 :

$ ng --version   _           _         ____ _   ___  / /  _ __  __ _ _  _| | __ _ _ __   / ___| |  |_ _|  / △ / | '_ / / _` | | | | |/ _` | '__|  | |  | |  | | / ___ /| | | | (_| | |_| | | (_| | |   | |___| |___ | | /_/  /_/_| |_|/__, |/__,_|_|/__,_|_|    /____|_____|___|        |___/Angular CLI: 6.0.8Node: 8.11.1OS: win32 x64Angular: 6.1.3... animations, common, compiler, compiler-cli, core, forms... http, language-service, platform-browser... platform-browser-dynamic, routerPackage              Version-----------------------------------------------------------@angular-devkit/architect     0.6.8@angular-devkit/build-angular   0.6.8@angular-devkit/build-optimizer  0.6.8@angular-devkit/core       0.6.8@angular-devkit/schematics    0.6.8@angular/cli           6.0.8@ngtools/webpack         6.0.8@schematics/angular        0.6.8@schematics/update        0.6.8rxjs               6.2.2typescript            2.7.2webpack              4.8.3

安装 hmr 依赖包

npm install --save-dev @angularclass/hmr --registry https://registry.npm.taobao.org

配置 hmr 文件

在 src/environments 目录下添加 environment.hmr.ts 配置文件

文件内容如下 :

export const environment = { production: false, hmr: true};

然后分别在 environment.prod.ts 和 environment.ts 添加 hmr:false 配置项

配置 src/tsconfig.app.json 文件

"compilerOptions": { ... "types": ["node"]}

如果不配置上面的 "types":["node"], 则会报错

ERROR in src/main.ts(16,7): error TS2304: Cannot find name 'module'.
src/main.ts(17,18): error TS2304: Cannot find name 'module'.

配置 src/hmr.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(mod => (ngModule = mod)); module.hot.dispose(() => {  const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef);  const elements = appRef.components.map(c => c.location.nativeElement);  const makeVisible = createNewHosts(elements);  ngModule.destroy();  makeVisible(); });};

更新 src/main.ts 文件内容如下

import { enableProdMode } from "@angular/core";import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";import { AppModule } from "./app/app.module";import { environment } from "./environments/environment";import { hmrBootstrap } from "./hmr";if (environment.production) { enableProdMode();}const bootstrap = () => platformBrowserDynamic().bootstrapModule(AppModule);if (environment.hmr) { if (module["hot"]) {  hmrBootstrap(module, bootstrap); } else {  console.error("HMR is not enabled for webpack-dev-server!");  console.log("Are you using the --hmr flag for ng serve?"); }} else { bootstrap().catch(err => console.log(err));}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选