开发状态编译出来的bundle体积比较大,在发布到生产环境之前需要进行prod和AOT,用法如下:

ng build --prod --aot

加上 --prod 参数之后,Angular-cli 会自动启用 TreeShaking(摇树)特性,简而言之,就是把用不到的包全部剔除掉,就像从树上把枯叶子摇下来一样,很形象吧?加上 --aot 参数是让 Angular-cli 启动预编译特性。

把编译之后的文件放在服务器上可能会遇到如下问题:

Cannot read property 'create' of undefined

三种解决方案:

  • 改变  zone.js  的版本号,重新  npm install
  • 更新 Angular-cli
  • 检查 app.module.ts 里是否有如下代码,有的话删掉
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
platformBrowserDynamic().bootstrapModule(AppModule);

关于  @angular/platform-browser-dynamic  模块 , 实际上我们只用到  bootstrapModule,但也是基本应用初始化必须使用的。 platformBrowserDynamic().bootstrapModule(AppModule); 应该在 src/main.ts 里使用