【问题标题】:What's the relationship and difference between ng build and ngcng build和ngc有什么关系和区别
【发布时间】:2017-06-20 02:09:05
【问题描述】:

我知道这个问题令人困惑,因为它让我困惑了一段时间。 以前我认为ngc只是另一个tsc,它将ts编译为js。 ng build 是一个多合一的命令,既可以完成 ngc 工作,也可以捆绑和部署编译后的 js 脚本(如 webpack)。 但是现在我很困惑,因为我看到 ng new 的示例项目有下面的脚本

"build:prod": "ng build --prod && ngc"

这两个脚本都让我感到困惑,我真的很想知道 ng build 和 ngc 到底是做什么的,以及为什么我们需要两者。

我是 Angular 4 和前端开发的新手,非常感谢参与此主题的各位。

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    忽略示例项目,您原来对ngc 的理解为tsc replacement for Angular applications is correct

    此外,如果您使用ng build --prod 命令,您将默认使用AOT 编译,这就是为什么要使用ngc 工具的原因。

    【讨论】:

      【解决方案2】:

      ngc 是安装 Angular 编译器时可用的命令。它的目的是将你的 Angular 代码,包括你的模板和 css,编译成 TypeScript。以这种方式编译允许您在“摇树”之后运行类似 Rollup 的东西来创建一个包,这是摆脱死代码并因此产生一个更小的文件的过程。

      ng build 可以通过 Angular cli 提供给您,并且做一些不同的事情。它将为您创建捆绑包并为您创建一个分发文件夹,其中包含部署到 Web 服务器所需的所有文件。它甚至通过添加脚本来修改你的 index.html 以加载由构建创建的包。

      这两篇文章对我理解 ngc 的目的很有帮助。

      http://blog.mgechev.com/2016/06/26/tree-shaking-angular2-production-build-rollup-javascript/

      http://www.gistia.com/angular-performance-two-strategies/

      【讨论】:

        【解决方案3】:

        Angular 使用两种类型的编译器,即 JIT 和 AOT。 当您使用命令 ng serve 和 ng build 运行默认命令来运行和构建应用程序时,它会使用 JIT(即时)编译器。

        另一方面,当您使用 ngc 命令时,它会使用 (AOT) Ahead of Time 编译器,该编译器在实际加载到浏览器之前实际编译和构建代码。

        【讨论】:

          猜你喜欢
          • 2018-04-19
          • 1970-01-01
          • 2021-04-11
          • 2021-08-26
          • 2015-01-11
          • 2012-09-07
          • 2016-02-17
          • 2012-04-21
          • 1970-01-01
          相关资源
          最近更新 更多