由于我们在.Net / Angular Web应用程序中的不利软件架构,我们可能无法为生产环境执行ng build(--prod)的捆绑。
我现在的问题是,加载 SystemJS 的Angular应用程序与使用ng build --prod
捆绑的同一应用程序相比,性能提升有多大?
有没有人进行过绩效衡量?
我尝试使用以下测试应用程序并在 Developer Console中读取执行时间,但这不是真正可靠的。 angular-realworld-example-app
" SystemJS" | "捆绑产品"
..... 1.9s ....... | .......... 1.1s
.... 2.2s ....... | .......... 1.4s
..... 1.7s ....... | .......... 1.3s
..... 2.1s ....... | .......... 1.0s
...... 1.8s ....... | .......... 1.1s
..... 1.7s ....... | .......... 1.15s
... ~1.68s ..... | ........ ~1.17s
(平均秒数)
答案 0 :(得分:3)
ng build --prod创造了一个"提前到来" bundle(https://angular.io/guide/aot-compiler),这意味着角度编译器不必包含在生产包中。
正如文档中所述,在下载大小方面有性能提升:
编译器大约是Angular本身的一半,因此省略它会大大降低应用程序的负载。
并且应用程序启动时间也增加了:
更快的渲染
使用AOT,浏览器会下载应用程序的预编译版本。浏览器加载可执行代码,以便它可以立即呈现应用程序,而无需先等待编译应用程序。
与JIT编译的应用程序相比,实际增益取决于模板的数量及其大小。
更少的异步请求
编译器在应用程序JavaScript中内联外部HTML模板和CSS样式表,从而消除了对这些源文件的单独的ajax请求。