Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2 AOT与JIT有效负载比较_Javascript_Angularjs_Angular_Jit_Aot - Fatal编程技术网

Javascript 角度2 AOT与JIT有效负载比较

Javascript 角度2 AOT与JIT有效负载比较,javascript,angularjs,angular,jit,aot,Javascript,Angularjs,Angular,Jit,Aot,我是Angular 2的新手,如果我不准确,请纠正我 关于编译器,我对Angular 1和Angular 2的理解是: 在Angular 1中,编译器更一般、更动态,这意味着脏检查代码是运行在不同组件上的单个代码。然而,在Angular 2中,为了性能起见,每个组件都将被编译成一个生成的代码,该代码处理特定组件的绑定和脏检查。这意味着根据组件模板,更具体地说,绑定的数量,生成的代码会变大 当我们使用JIT时,这并不重要,因为此代码不通过网络,而是在浏览器中生成的。但是当使用AOT时,它将从服务器

我是Angular 2的新手,如果我不准确,请纠正我

关于编译器,我对Angular 1和Angular 2的理解是: 在Angular 1中,编译器更一般、更动态,这意味着脏检查代码是运行在不同组件上的单个代码。然而,在Angular 2中,为了性能起见,每个组件都将被编译成一个生成的代码,该代码处理特定组件的绑定和脏检查。这意味着根据组件模板,更具体地说,绑定的数量,生成的代码会变大

当我们使用JIT时,这并不重要,因为此代码不通过网络,而是在浏览器中生成的。但是当使用AOT时,它将从服务器传输

问题(可能):
当应用程序很小时,AOT肯定会导致较小的负载,因为编译器不会发送到浏览器。但是随着应用程序的增长,我假设这种差异开始减小,并且可能变得相反(是吗?!)。但我对它没有定量的感觉对于中型或大型应用程序来说,这将是一个真正的问题吗?

解决方案是使用LazyLoading正确管理AOT

要真正给出答案,会有问题,但现在我们有了管理这些问题的工具。延迟加载是一种我们无法轻松应用于AngularJS的解决方案

查看此链接,它制作得非常好,涵盖了有关模块、上下文和编译的整个主题:

您还可以将两者结合起来,充分利用: 回答以下问题:“但随着应用程序的增长,我假设这种差异开始减小,并可能发生逆转(是吗?!)”

是的,在一个非常大的应用程序上可以看到差异

我在网页starter github上问了一个类似的问题,并引用了答案:

您可能会注意到,build:prod:aot中的主文件和块文件比build:prod中的大,这是完全正常的,因为aot生成的代码更多。 AOT中的总量较少,因为编译器不是捆绑包的一部分,您可以在供应商捆绑包的大小中看到它。 这也意味着随着应用程序的增长,AOT将产生更大的代码,因为您添加了更多AOT生成的代码,但编译器大小是恒定的。 angular团队正在致力于减少发出的代码,其中一个即将推出的功能是一个新的视图引擎,它将减少捆绑包的大小,但会略微影响性能(这始终是一个折衷方案)

尽管如此,使用AOT启动应用程序的速度要比使用JIT快得多。 请看这个问题,angular2团队似乎意识到了这一点,并计划减少这种行为

angular2团队侧需要跟踪的问题:

更新:现在使用Angular 4

我们已经对AOT生成的代码进行了修改。在某些情况下,这些更改会将组件生成的代码大小减少一半以上。阅读查看引擎更新的设计文档


另一个需要考虑的问题是AoT负载可以被更好地压缩(手头没有AoT构建来检查这一点)。将AoT和JIT放在一起是没有意义的,关键是编译器的裁剪,这是你所说的。它是:延迟加载编译器!我非常想念Jquery:)我们在做什么?Angular的本意是让事情变得更简单,现在我们必须找到方法让它工作起来。