2017-07-14 99 views
3

我正在转换angular2应用程序使用commonjs为JiT和手动配置aot(两个index.html文件,两个main.ts文件等)的旧方法angular4 cli模板(ng新的appName)。AngularCli构建和服务器-aot vs --prot

2/4之间似乎很多变化周围的气候变化。观看了一些youtube视频,使用ng cli创建了一个新应用程序,并且我看到ng build和ng都支持--prod和--aot标志,但生成的webpack在使用两种不同标志时大小不同。

是什么

ng build --prod 

ng build --aot 

,然后之间的区别发球:

ng serve --prod 

ng serve --aot 

看来prod捆绑小于aot捆绑,但为什么?

+0

'--prod'是prod build(这将会更小)'--aot'提前编译。 –

+0

是的,但prod做什么不是封装在 - 不是吗? – cobolstinks

+0

https://stackoverflow.com/questions/40205903/angular2-cli-why-bundle-size-of-prod-smaller-than-prod-aot –

回答

3
Bundle size of “ng build --prod” smaller than “build --prod --aot

如果您使用的是不支持AOT(和释放UMD捆绑)这件事会发生某些库。原因是我们无法优化纯粹JavaScript的组件。不幸的是,这不是我们可以解决的问题。

这些库需要公开它们的装饰器,并且它们的组件/模块已经被AoT编译的ES2015模块。我们正在制定图书馆指南,以支持JIT和AoT编译。

此外,有时候有些模板的AoT尺寸可能会比JIT大。 gzip版本应该是相反的方式,因为大部分AoT内容是反复重复的相同的语句。

虽然束较大,但引导时间应该明显更快。

+0

因此,在将应用程序发布给用户之前,建议使用--prod标志? – cobolstinks

+0

我猜我在空白什么时候有人会使用 - 不加标志... – cobolstinks

0

--prod使得其具有所需部署的应用程序,这意味着它包含了所有的JS束一切dist文件夹

+0

也是 - 不过 – cobolstinks

5

--prod - 申请丑化,然后再缩小,以减少束以及使生产的角度工作模式,它减少了角度编译器给出的运行时警告,并提高了性能。

--aot - generaly当我们服务的角度项目中的所有角的文件浏览器的蚂蚁下载它会编译并在浏览器中执行应用程序,但在交付给浏览器,因此预编译aot整个应用程序提高性能

build - 将捆绑文件并将其放在dist文件夹中,以便我们可以将这些文件用于服务器上的部署。

serve - 将在lite服务器上运行应用程序。