[英]Is there any advantage of using JIT compilation in Angular in favor of using AOT?
Angular文档指定了使用AOT编译来支持JIT的几个原因:
但是,当寻找使用JIT的参数时,我什么也没找到。 此外, 从Angular 5.2升级到Angular 8后,在运行开发版本(使用JIT)时突然出现一个奇怪的错误。 错误是:
ERROR in ./src/app/shared/app-configuration/shared/app-configuration.model.ts 22:16-35
"export 'IMyComponents' was not found in '@mycompany/mypackage'
当运行产品构建(使用AOT)时,一切都很好。 这让我感到惊讶,因为我从未遇到过Angular编译问题,其中prod构建成功 ,而dev构建失败 。
因此,我的假设是JIT仅适用于开发版本(即速度)。 并且添加--aot标志可以安全地完成,没有任何问题。 还是我错过了什么?
没错,Angular提供了两种绑定应用程序的方法:
即时(JIT) ,可在运行时在浏览器中编译您的应用。 (当您运行ng serve
)
提前(AOT) ,可在构建时编译您的应用程序。 (当您运行ng serve --aot=true
)
默认情况下,带有--prod元标记的ng build命令(ng build --prod)会使用AOT进行编译。
在浏览器下载并运行该代码之前,Angular Ahead-of-Time(AOT)编译器会在构建阶段将Angular HTML和TypeScript代码转换为高效的JavaScript代码。 在构建过程中编译应用程序可在浏览器中提供更快的渲染速度。
由于JIT在运行时编译您的应用程序,因此它可以优化编译并仅构建必要的代码。 因此,在开发模式下,通常使用JIT来节省完整构建的时间。 使用JIT可以加快编译时间。
AOT优化了运行速度,但是编译时间更长,这就是为什么在生产中经常使用它的原因。 AOT还可以优化应用程序的大小,因为所有文件都将在运行之前进行编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.