JSCore浅析及其在iOS上的使用
一、浏览器的组成https://i-blog.csdnimg.cn/blog_migrate/f4da8403a0768ef2e0366f157cb17f22.png 浏览器的组成 上文中,中间部分是 WebKit,其他部分由浏览器实现,而 WebKit 中紧张分为四大部分:
1. WebKit Embedding Api
提供和浏览器进行交互的一些接口,好比进步后腿、新开窗口、新开页面、关闭页面等;
2. WebKit Ports(Platform Api)
跨平台 Api,感觉应该是 WebKit 暴露一些没有实现接口,供不同的平台去实现,最后完成统一的功能,如:渲染、SSL 认证、音视频等;
最典型的好比在 iOS 的 WKWebView 上,使用 CoreGraphic 来处置惩罚相关的渲染逻辑,而在 Android 上则使用 Skia 来处置惩罚渲染逻辑;
3. WebCore
该部分的功能是解析 HTML 天生 DOM 和 CSSOM ,合并之后天生渲染树最终天生纹理(Graphic Context):
https://i-blog.csdnimg.cn/blog_migrate/43118b607fddbba0f3604901f92c170b.png 渲染流程 在以 WebKit 为底子的浏览器中,几乎所有的浏览器都没有重写 WebCore,而是直接使用的 WebKit 源码中的 WebCore 来完成 HTML 的渲染。不同浏览器之间的紧张区别则在于 JSCore 的实现;
4. JSCore
早期由于只有 HTML 和浏览器两个角色。浏览器向配景发送表单时,即使是一个必选框没有填写,浏览器也无法获取 HTML/DOM,以是只能直接提交给服务端。由于其时网速慢,耗时很长之后让用户重新填写表单的体验很差,以是亟需一个角色来操作 HTML 进行验证;
浏览器 Javascript 语言的诞生的目的是为浏览器和 HTML 进行交互提供一个桥梁。而 Javascript 的情况提供、解析、运行、runtime 管理都由 JSCore 负责;
JSCore 的角色类似于编译器和假造机的结合;
JVM 假造机不负担编译的工作,编译器将 .java 文件编译天生字节码文件 .class,而 JVM 则直接解析字节码文件,根据不同的设备特性天生对应的二进制码,并且在整个 runtime 过程中管理内存和 GC 操作,JVM 的工作内容:
[*]将字节码转化成二进制码(呆板码);
[*]执行并管理 Runtime;
而 OC 中通过编译器天生 Mach-O 文件之后,当步伐被执行时,二进制代码直接被加载到假造内存并印射到物理内存中进行执行;
JSCore 则负担了编译器和假造机的角色。Javascript 起首被 JSCore 转化成字节码最终转化成二进制代码并执行,同时在 runtime 中管理内存和 GC,即 JSCore 的工作内容:
[*]将 JS 代码编译成字节码;
[*]将字节码转化成二进制码(呆板码);
[*]执行并管理 Runtime;
https://i-blog.csdnimg.cn/blog_migrate/712f9bd58ab3d386e7bd69b5a1f656bc.png JSCore解析流程 二、JSCore 的特性
1. 基于寄存器的指令集结构
代码执行效率更高,但是占用内存更大;
2. 单线程
一个 J
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]