JIT编译与AOT编译

JIT (just in time) 实时编译,即时编译

 JIT的优势是Profile -Based Optimization ,也就是边跑边优化,根据运行时信息然后随着时间的推移得到尽可能优化的代码,适用于开发调试

AOT-ahead of time  预先编译,静态编译

相比之下AOT的优点:

在客户端我们不需要导入体积庞大的angular编译器,这样就可以减少我们js脚本库的大小,使用AOT编译后的应用,不再包含任何HTML片段,取而代之的是编译生成的Typescript代码,这样的话Typescript编译器就能提前发现错误,总之,使用AOT编译模式,我们的模板是类型安全的,适用于部署发布。

特性 JIT AOT
编译平台 (Browser)浏览器 (Server)服务器
编译时机 Runtime(运行时) (Build)构建阶段
包大小  较大  较小
执行性能  慢  更好
启动时间  长  更短

基于JIT(Just in Time)编译器的动态引导

在main.ts使用JIT模式

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app.module';

platformBrowserDynamic().bootstrapModule(AppModule);

 

基于AOT(Ahead of Time)编译器的静态引导

在main.ts使用AOT模式

 

import { platformBrowser } from '@angular/platform-browser';

import { AppModuleNgFactory } from './app.module.ngfactory';
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);


  JIT和AOT编译器都会生产AppModuleNgFactory,只是方式不一样。JIT在浏览器,缓存里实时生产AppModuleNgFactory 。AOT编译器会生产一个物理文件app.module.ngfactory。AOT模式引入这个文件,然后启动: 

import { AppModuleNgFactory } from './app.module.ngfactory'; 

生成app.module.ngfactory

@angular/compiler-cli提供了tsc和AOT两种编译器,把TypeScript转换为Javascript:

  安装ngc

npm install @angular/compiler-cli typescript@next @angular/platform-server @angular/compiler

 


猜你喜欢

转载自blog.csdn.net/weixin_39786171/article/details/80397335