Angular 为什么我们需要设置--aot false";在有角度的产品制造中?

Angular 为什么我们需要设置--aot false";在有角度的产品制造中?,angular,angular-cli-v7,Angular,Angular Cli V7,我知道“提前编译”在构建时提供编译。--aot还有许多其他优点,例如 应用程序是预编译的,因此没有这样的等待模板 绑定错误将在构建时已知,等等 但是,还有一个选项可以将--aot设置为false(对于产品构建也是如此)。为什么我们需要将--aot设置为false?换句话说,--jit提供了什么样的优势?我只是想了解使用--aot而不是--jit是否有任何缺点,因为否则,即使在开发构建中,我也应该始终使用--aot。如果使用--aot没有折衷,那么为什么不将它设置为ng build和ng se

我知道“
提前编译
”在构建时提供编译。
--aot
还有许多其他优点,例如

  • 应用程序是预编译的,因此没有这样的等待模板

  • 绑定错误将在构建时已知,等等


但是,还有一个选项可以将
--aot
设置为false(对于产品构建也是如此)。为什么我们需要将
--aot
设置为
false
?换句话说,
--jit
提供了什么样的优势?我只是想了解使用
--aot
而不是
--jit
是否有任何缺点,因为否则,即使在开发构建中,我也应该始终使用
--aot
。如果使用
--aot
没有折衷,那么为什么不将它设置为
ng build
ng serve
的默认值呢?

正如@Ingo Burk在评论中提到的那样,我得到了同样的结果,所以我想把它作为一个答案发布

  • Angular 9现在实际使用AOT作为默认值
  • AOT比JIT需要更长的时间(因此,对于一些小补丁的快速测试,它可能很有用)
我还发现另一件有趣的事是


然而,在版本5及更高版本中,编译器在发出.js文件时自动执行此重写。从历史上看,AOT的速度要慢得多,因此JIT是本地开发的首选方式。对于Angular 9和Ivy,AOT是默认的,即使对于开发构建也是如此。