如何在 maint.ts 中使用带有 angular-cli 应用程序的 platformBrowser 而不是 platformBrowserDynamic 以在 aot 模式下引导应用程序?

Azu*_*aur 5 typescript angular-cli angular2-aot angular

我正在使用带有 aot=true 和 --prod 的 angular cli 构建应用程序,因此应用程序使用 aot 进行编译并且包大小更小,但是我如何以 aot 模式引导应用程序,以便引导程序更快,如本文所述?

当前代码:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/app.module';

if (!environment.local) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)

文章提出的代码:

import { platformBrowser } from '@angular/platform-browser';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
//** where is the following file generated by angular-cli? **
import { AppModuleNgFactory } from './app/app.module.ngfactory';

if (!environment.local) {
  enableProdMode();
}

platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到 app.module.ngfactory?这还需要吗?或者使用带有角度 cli 的 aot 的 platformBrowserDynamic 仍然以某种方式导致 aot bootstrap 而不是 jit bootstrap?

Mat*_*top 0

这是一个非常古老的问题,但我在尝试解决类似问题时偶然发现了它。

\n
\n

当使用动态平台时,每次加载应用程序时都会创建该工厂;然而,现在我们甚至在应用程序运行之前就创建它。除非您使用...构建应用程序,否则它AppModuleNgFactory不会存在。ngc

\n
\n
\n

ngc 很可能是与您的 Angular 应用程序一起安装的,因此为了运行 ngc,您只需./path/to/node_modules/.bin/ngc -p ./path/to/src在项目目录中运行 \xe2\x80\x99 即可。如果没有安装\xe2\x80\x99s,可以使用npm install @angular/compiler-cli typescript@next @angular/platform-server @angular/compiler.

\n
\n

运行./node_modules/bin/ngc根目录(项目tsconfig.ts所在的位置)可以生成此文件。

\n