JSCore浅析及其在iOS上的使用

莱莱  金牌会员 | 2025-3-21 01:30:42 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 979|帖子 979|积分 2937

一、浏览器的组成

         
          浏览器的组成    上文中,中间部分是 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):
         
          渲染流程    在以 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;
         
          JSCore解析流程    二、JSCore 的特性

1. 基于寄存器的指令集结构

代码执行效率更高,但是占用内存更大;
2. 单线程

一个 J

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表