【问题标题】:Are --prod and --aot options required in Ivy in Angular 9?Angular 9 中的 Ivy 是否需要 --prod 和 --aot 选项?
【发布时间】:2020-02-29 19:34:34
【问题描述】:

angular 9 开始,Angular 开始使用名为 IVY 的新渲染引擎,正如其文档所述,构建的代码在开发和生产环境中看起来相同并且易于调试,是否仍需要通过 --prod--aot 构建代码时的选项

旧的构建命令

ng build --aot --prod

它是不是新命令应该看起来像

ng build //for both prod and dev build

或者只有 --prod 选项是 prod 构建所必需的

【问题讨论】:

    标签: angular angular-cli angular9 angular-builder


    【解决方案1】:

    Aot 从来都不是必需的,它在生产版本中默认设置为打开,而在开发中默认设置为关闭。由于速度的提高,现在 aot 已成为所有环境的标准配置。因此,对于开发构建,您需要这样做:

    ng build
    

    对于生产版本

    ng build --prod
    

    你可以检查你的 angular.json 文件,看看哪个设置做了什么。 --prod 不仅仅是打开提前编译器。在此构建期间正在进行许多其他优化

    【讨论】:

      【解决方案2】:

      默认 aot 值取决于您正在运行的 Angular 版本:

      Angular 提供了两种编译应用程序的方法:

      • 即时 (JIT),它在浏览器中编译您的应用程序 运行。这是 Angular 8 之前的默认设置。
      • Ahead-of-Time (AOT),它在以下位置编译您的应用程序和库 建造时间。这是 Angular 9 以来的默认设置。

      【讨论】:

        【解决方案3】:

        TLTR;
        --aot 使用 --prod 时不需要标志,例如 ng build --prod


        运行ng build(仅构建)或ng serve(本地构建和服务)CLI 命令时,JIT 编译是默认的。对于 AOT 编译,在 ng buildng serve 命令中包含 --aot 选项:

        ng build --aot
        ng serve --aot

        带有--prod 元标志的ng build 命令 (ng build --prod) compiles with AOT by default

        您可以自定义您的angular.json 以将aot 作为特定命令的默认值,这是为build 添加aot 的方法:

        "build": {
            options {
                ...
                "aot": true,
            } 
        }
        

        AOT buildserve 是 Angular 团队推荐的,但不是默认的 然而。更多详情here

        【讨论】:

        • 角度 9 之后有什么变化吗?
        • @AniruddhaDas 确实注意到这方面的变化,自 Angular CLI 1.0.0-beta.28 以来,在构建 --prod 很长时间以来,默认使用 --aot
        猜你喜欢
        • 1970-01-01
        • 2020-09-07
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 2020-07-08
        • 2020-06-04
        • 1970-01-01
        相关资源
        最近更新 更多