Angular 2/4 - Вперед сборник, как
Я пытаюсь загрузить приложение Angular 2 RC5 после этого руководства
https://angular.io/docs/ts/latest/guide/ngmodule.html
Ниже мой код
import { AppModuleNgFactory } from './app.module.ngfactory';
import {platformBrowser} from "@angular/platform-browser";
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
Однако, когда я попытался скомпилировать код typescript, я получил следующую ошибку
app\main.ts(1,36): ошибка TS2307: не удается найти модуль './app.module.ngfactory'.
Как я могу сгенерировать файл app.module.ngfactory? Какой инструмент я должен использовать?
Ответы
Ответ 1
Оба компилятора JIT и AOT генерируют класс AppModuleNgFactory из того же исходного кода AppModule.
JIT-компилятор создает этот класс factory "на лету" в памяти в браузере. Компилятор AOT выводит factory в физический файл, который мы импортируем здесь, в статической версии main.ts
На высоком уровне @angular/compiler-cli
предоставляет оболочку вокруг компилятора Typescript s tsc
, и оба AoT компилируют ваш код приложения, а затем пересылают ваши приложения Typescript в Javascript:
$ ngc -p src
Это создает новый файл для каждого компонента и модуля (называемый NgFactory)
Чтобы запустить приложение в режиме AoT,
все, что требуется, это изменение вашего файла main.ts из
import {platformBrowserDynamic} from ‘@angular/platform-browser-dynamic’
import {MyAppModule} from ‘./app’
platformBrowserDynamic().bootstrapModule(MyAppModule);
к
import {platformBrowser} from ‘@angular/platform-browser’
import {MyAppModuleNgFactory} from ‘./app.ngfactory’ //generated code
platformBrowser().bootstrapModuleFactory(MyAppModuleNgFactory);
EDIT:
Чтобы использовать команду ngc
, сначала установите их -
$ npm install @angular/compiler-cli [email protected] @angular/platform-server @angular/compiler
ngc
является заменой для tsc
, которую вы найдете в папке ./node_modules/.bin/ngc
.
Ответ 2
2017 UPDATE
Начиная с Janurary 2017 При использовании angular-cli компиляция AOT теперь является методом компиляции по умолчанию при запуске следующую команду ng build --prod
без каких-либо изменений кода.
Если вы хотите отключить AOT и вместо этого использовать JIT в процессе производства, вы можете использовать ng build --prod --no-aot
.
Источник: https://github.com/angular/angular-cli/issues/4138
Это означает, что вы все еще можете использовать компиляцию JIT во время разработки (будет компилироваться быстрее так красиво) с помощью ng build
и оставить ваш .ts
следующим:
// The browser platform with a compiler
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
// The app module
import { AppModule } from './app/app.module';
// Compile and launch the module
platformBrowserDynamic().bootstrapModule(AppModule);
Подводя итог:
ng build // build with JIT
ng build --prod --no-aot // build with JIT
ng build --prod // build with AOT