【问题标题】:app compiler time with `ng serve --aot=true` takes more time than just `ng serve`使用 `ng serve --aot=true` 的应用程序编译时间比 `ng serve` 花费更多时间
【发布时间】:2019-06-24 08:37:23
【问题描述】:

我的 Angular 应用程序,我没有模块。当我用 html 或 css 更改某些内容时,需要时间重新编译。所以我决定从ng serve --aot=true 开始,但我发现与没有任何标志的ng serve 相比,运行应用程序需要更多时间。但是这里有什么问题或者ng serve --aot=true的目的是什么?

任何人都可以帮助我理解ng serve --aot=true 标志。

【问题讨论】:

  • aot 用于加速应用程序运行而不是应用程序构建
  • AOT 旨在通过花费更长的编译时间来使您的应用程序快速运行。 JIT(即时)编译器设计用于在开发期间在本地构建和服务,因为它编译速度更快。在构建应用程序以进行部署时使用 AOT。

标签: angular angular8


【解决方案1】:

Angular 提供了两种绑定应用程序的方法:

即时 (JIT),它会在运行时在浏览器中编译您的应用。 (当你运行ng serve

  • 在浏览器中编译
  • 每个文件单独编译
  • 在更改代码后和重新加载浏览器页面之前无需构建
  • 适合本地发展

Ahead-of-Time (AOT),在构建时编译您的应用。 (当你运行ng serve --aot=true

  • 由机器自己编译,通过命令行(更快)
  • 所有代码一起编译,在脚本中内嵌 HTML/CSS
  • 无需部署编译器
  • 适合生产构建

带有 --prod 元标志的 ng build 命令(ng build --prod)默认使用 AOT 编译。

Angular Ahead-of-Time (AOT) 编译器在浏览器下载和运行代码之前的构建阶段将您的 Angular HTML 和 TypeScript 代码转换为高效的 JavaScript 代码。在构建过程中编译应用程序可以更快地在浏览器中呈现。

由于 JIT 在运行时编译您的应用程序,它可以优化编译并只构建必要的代码。因此在开发模式下,通常使用 JIT 来节省完整构建的时间。使用 JIT 编译时间会更快。

AOT 优化了运行速度,但编译时间更长,这就是为什么在生产中使用它很常见。 AOT 还将优化您的应用程序的大小,因为所有文件都将在运行之前进行编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 2019-04-04
    • 2018-12-13
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多