Gau*_*tel 90 compilation angular
我在引用这个文档时遇到了编译概念.可以使用JIT或AOT编译.但是,我发现它非常简短,需要详细了解以下几点,
Ben*_*ham 127
JIT - 及时编译TypeScript以执行它.
AOT - 在构建阶段编译TypeScript.
Sha*_*vek 45
虽然有一些答案,但我想补充一些我的发现,因为我真的很困惑实际编译的所有情况,TS- > JS转换发生.我将Jeff的博客作为参考.
该TS开发者编写的代码被编译到JS代码.现在,这个编译的js代码再次由浏览器编译,以便html可以根据用户操作动态呈现,因此angular 在运行时也会生成(对于组件,更改检测,依赖注入)的代码.
(浏览器编译器接受应用程序的指令和组件及其相应的HTML和CSS,并创建组件工厂以快速压缩具有其所有视图创建逻辑的实例.)
当Angular 2应用程序在浏览器中引导时,JIT编译器执行大量工作以在运行时分析应用程序中的组件并在内存中生成代码.刷新页面时,所有已完成的工作都将被丢弃,JIT编译器将重新完成工作.
该TS开发者编写的代码被编译到JS代码,这js
已经被编译为角以及.现在,这个编译的 js代码再次被浏览器再次编译,以便html可以呈现.但是,这里的问题是编译器angular已经完成了功能,AOT因此浏览器不必担心组件创建,更改检测,依赖注入.所以,我们有:
更快的渲染
使用AOT,浏览器会下载应用程序的预编译版本.浏览器加载可执行代码,以便它可以立即呈现应用程序,而无需先等待编译应用程序.
更少的异步请求
编译器在应用程序JavaScript中内联外部HTML模板和CSS样式表,从而消除了对这些源文件的单独的ajax请求.
较小的Angular框架下载大小
如果已经编译了应用程序,则无需下载Angular编译器.编译器大约是Angular本身的一半,因此省略它会大大降低应用程序的有效负载.
提前检测模板错误
AOT编译器在构建步骤中检测并报告模板绑定错误,然后用户才能看到它们.
安全性更好
AOT在将HTML模板和组件提供给客户端之前很久就将其编译为JavaScript文件.由于没有可读取的模板且没有冒险的客户端HTML或JavaScript评估,因此注入攻击的机会较少.
Benyamin,Nisar和Gaurang的要点已经涵盖了剩余的差异.
随意纠正我
Gau*_*tel 22
Benyamin和Nisar在这里提到了一些好处.我会补充一下.
虽然从理论上讲,AOT在生产方面看起来比JIT更具吸引力,但我怀疑AOT是否真的值得!
好吧,我发现杰夫克罗斯很好的统计数据,它确实证明AOT显着减少了应用程序的自举时间.从杰夫克罗斯的帖子下面发布的帖子会让你快速了解它,
viv*_*ien 13
JiT(及时)编译
名称本身描述了工作,它只是在浏览器中加载页面时编译代码.浏览器将下载编译器并构建应用程序代码并呈现它.
这对开发环境有利.
AoT(提前)编译
它在构建应用程序时编译所有代码.所以浏览器不想下载编译器并编译代码.在这种方法中,浏览器只需加载已编译的代码即可轻松呈现应用程序.
可以在生产环境中使用
我们可以比较JiT和AoT编译如下
Job*_*ews 11
JIT(及时编译)
AOT(提前编译)
在一天结束时,AOT(提前)和JIT(及时)执行相同的操作。它们都编译您的Angular代码,因此它可以在本机环境(也称为浏览器)中运行。关键区别在于编译发生的时间。使用AOT,您的代码将在应用程序下载到浏览器之前进行编译。使用JIT,您的代码将在运行时在浏览器中进行编译。
AOT的好处:
| 归档时间: |
|
| 查看次数: |
56489 次 |
| 最近记录: |