JIT和AOT编译介绍

JIT - Just-In-Time               实时编译,即时编译

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

AOT - Ahead-Of-Time              预先编译,静态编译

AOT与JIT对比有以下优点:

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

特性                        JIT                                        AOT

编译平台         (Browser) 浏览器              (Server) 服务器

编译时机         Runtime (运行时)               Build (构建阶段)

包大小                    较大                                     较小

执行性能                 慢                                        更好

启动时间                 长                                        更短

  Angular JIT和AOT编译

基于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

JIT和AOT编译详解相关推荐

  1. java jit aot_JIT和AOT编译详解

    JIT和AOT编译介绍 JIT - Just-In-Time             实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...

  2. linux 内核模块(驱动) 编译详解

    一.准备工作 准备工作如何做,这里就不详说了. a) 首先,你要有一台PC,装好了Linux. b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的).make.ncurse ...

  3. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  4. 全志 android 编译,全志Android SDK编译详解(二)

    注意要确定安装了jdk) 第一步: cd  lichee; ./build.sh  -p sun5i_elite -k 3.0  (apt-get install uboot-mkimage需要安装m ...

  5. Android编译详解之lunch命令 【转】

    本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载 ▼ 标签: it 分类: android内核剖析 Android的优势就在于其开源,手机和平板生 ...

  6. linux 2.4内核编译,linux 2.4内核编译详解

    2.4内核编译详解 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内 ...

  7. vb6反编译详解_[原创]VB6反编译详解(一)

    [原创]VB6反编译详解(一) 2006-7-9 16:59 23171 [原创]VB6反编译详解(一) 2006-7-9 16:59 23171 VB6反编译详解 by Kenmark-Fenix ...

  8. PowerBuilder命令行编译详解[1]

    PowerBuilder命令行编译详解[1] www.educity.cn   发布者:bin0725   来源:网络转载   发布日期:2013年05月28日    公司的系统是使用PB9.0 + ...

  9. linux nginx编译详解,Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备 1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码 代码如下:# ...

最新文章

  1. 防火墙DNAT与SNAT详谈
  2. 查看suse系统版本
  3. 微信小程序AES加密解密
  4. 【解答】一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待。
  5. linux上还原自主nuget包需要注意的问题
  6. Spring Cloud —— 消息队列与 RocketMQ
  7. go语言结构体作为函数参数,采用的是值传递
  8. 前端开发css禁止选中文本
  9. rest get map参数_Spring 5.2.2 集成技术—REST
  10. WebLogic命令行远程部署
  11. 微软未来将在其开发语言整合F#语言(2007-10)
  12. jflash添加芯片_【原创】巧用J-Link+J-Flash给Kinesis烧写序列号
  13. 学习记录:小程序图片上传至服务器
  14. 2020徐涛背诵笔记电子版pdf_2021徐涛冲刺背诵笔记电子版-2021徐涛冲刺背诵笔记pdf免费版下载_东坡手机下载...
  15. 计算机考研英语一历年国家线,历年考研英语国家线
  16. 【定位原理揭秘第三期】室内定位技术原理揭秘
  17. Python学习案例2——数独解题及出题程序
  18. Python中的逻辑运算符号
  19. 时间序列数据分析—概述
  20. AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE(阅读笔记)

热门文章

  1. Android_RecyclerView实现上下滚动广告条(带图片)
  2. 你不努力,有什么资格抱怨(转)(文/蒋文伟)
  3. HTML-Css文字排版--字体--段落
  4. 家长控制与火绒的结合——限制电脑与手机娱乐
  5. Java中抽象类 abstract和interface的区别
  6. 【软件测试】测试面试,面试官其实想要的答案......
  7. cursor is oracle 日期_Oracle 12CR2查询转换之cursor-duration临时表
  8. HyperLeger Fabric学习(一)
  9. Ubuntu深度学习环境配置一箩筐
  10. JSP和HTML的区别