我知道这个问题令人困惑,因为它让我困惑了一段时间。 以前我认为ngc只是另一个tsc,它编译ts到js。 ng build是一个一体化的命令,可以同时执行ngc工作,捆绑和部署已编译的js脚本(如webpack)。 但现在我很困惑,因为我看到ng new的示例项目有以下脚本
“build:prod”:“ng build --prod&& ngc”
这个脚本让我感到很困惑,我真的很想知道ng build和ngc做了什么,以及为什么我们都需要这两个。
我是anggular 4和前端开发的新手,非常感谢你对这个帖子发表评论。
答案 0 :(得分:1)
忽略示例项目,您对ngc
的原始理解为tsc
replacement for Angular applications is correct。
此外,如果您使用的是ng build --prod
命令,则默认使用AOT
编译,这就是使用ngc
工具的原因。
答案 1 :(得分:1)
ngc是安装角度编译器时可用的命令。它的目的是将您的角度代码(包括模板和css)编译到TypeScript中。通过这种方式编译,您可以运行像Rollup之类的东西,在“树抖动”之后创建一个包,这是删除死代码并因此生成一个较小的文件的过程。
您可以通过angular cli获得这两篇文章对我有助于理解ngc的目的。
http://blog.mgechev.com/2016/06/26/tree-shaking-angular2-production-build-rollup-javascript/
答案 2 :(得分:0)
Angular正在使用两种类型的编译器,即JIT和AOT。 当您使用ng serve和ng build命令运行用于运行和构建应用程序的默认命令时,它将利用JIT(Just in Time)编译器。
另一方面,当您使用ngc命令时,它会使用(AOT)Ahead of Time编译器,该编译器在实际加载到浏览器之前实际进行编译和构建代码。