因为随着JS这门语言的发展,JS的宿主越来越多,有各种各样的浏览器,甚至是常见于服务端的Node.js(基于V8运行)。

2.       Webkit 源代码由三大模块组成:

1). WebCore,

2). WebKit,

3). JavaScriptCore。

WebCore排版引擎核心,WebCore包含主要以下模块:Loader, Parser(DOM,Render), Layout,Paint。

WebKit:移植层,主要包含: GUI,File System, Thread,Text,图片编解码等与平台相关的函数。

JavaScriptCore:JS虚拟机,相对独立,主要用于操作DOM, DOM是W3C定义的规范,主要用于定义外部可以操作的浏览器内核的接口,而webcore必须实现DOM规范。

https://www.cnblogs.com/feng9exe/p/10300273.html

1Webkit

1.1 webkit结构分析

Webkit主要包括三个模块:WebCore 渲染引擎、JavaScriptCore 脚本解析引擎和WebKit 外壳。其中,WebCore 渲染引擎模块及JavaScriptCore 脚本解析引擎模块共同完成内核功能,组成了浏览器内核。另外,WebKit 也是整个浏览器引擎工程的名字。

在WebKit 工程中,不同的文件夹就相应的对应了不同的功能模块。其主要的功能模块如:一、WebKit:浏览器外壳模块,它隐藏并选择WebCore 渲染引擎到当前平台。WebKit 实际上相当于一个抽象化的浏览器外壳,它隐藏浏览器渲染引擎WebCore,并向UI 曾提供一些抽象的功能。

二、JavaScriptCore:JavaScript 脚本解析引擎,其中:KJS:JavaScript 内核。JavaScript 内核支持如下内核类:String(字符串)、Math (计算)、Number(数字)、Boolean (布尔型变量)、Date (日期)、Array(数组)、Regular Expression (正则表达式)JavaScriptCore 是可扩展的。API:基本JavaScript 功能,实际就是JavScript 的对外接口函数库。DerviedSource:yacc 自动产生的代码,主要用于Java Script 脚本的解析。WTF:KDE 的C++模板库。

三、WebCore:是整个项目的核心,用来实现渲染引擎,解析Web 页面,生成一个DOM 树和一个render 树,并最终render 这个树。其具体模块如下:1.Page:与外框相关的内容(Frame,Page,History,Focus,Window);2.Loade:加载资源及Cache;3.HTML:DOM HTML 内容及解析;4.DOM: DOM CORE 内容;5.XML:XML 内容及解析;6.Rendering:排版功能;7.CSS:DOM CSS 内容;8.Binding:提供DOM 与JavascriptCore 绑定的功能,并提供对JavascriptCoreAPI 的扩展,实现了Web 的主要类,如:窗口类、文档类、表格类、单元类等。

还包括Bridge:与其它功能绑定的功能,如:DOM,C,JNI,Plugins 等。Editing:所有与编辑相关的功能。DerviedSource:yacc 自动产生的代码,主要是与CSS 模块一起负责对CSS的支持。ForwordHeads:头文件,无实际意义。Plugins:插件功能。Storage:与数据库存储相关的功能。ICU:多语言支持,IBM ICU 库。History:与历史纪录相关功能。Platform:与平台相关的功能,如图形图像、字体、Unicode、IO、输入法、网络等。

图1 Webkit体系结构

图1 表示了WebKit 主要功能模块之间的依赖关系。其中,渲染引擎WebCore 以及JavaScrip t 脚本解析引擎JavaScriptCore 是我们将要移植的WebKit内核。在移植的基础上,我们将开发基于CAR 构架技术和欣浏览器外壳,该外壳其实相当于图中的WebKit 模块,它将隐藏浏览器渲染引擎WebCore 以及JavaScript 脚本解析引擎JavaScriptCore,并向UI 曾提供一些抽象的功能。

https://www.cnblogs.com/feng9exe/p/6676114.html

The JavaScriptCore Framework provides the ability to evaluate JavaScript programs from within Swift, Objective-C, and C-based apps. You can use also use JavaScriptCore to insert custom objects to the JavaScript environment.

JSCore是WebKit默认内嵌的JS引擎,之所以说是默认内嵌,是因为很多基于WebKit分支开发的浏览器引擎都开发了自家的JS引擎,其中最出名的就是Chrome的V8。这些JS引擎的使命都相同,那就是解释执行JS脚本。

jscore 与 node.js  jsbridge

JavaScriptCore在浏览器引擎中的位置的更多相关文章

  1. 找到你的位置(JS在页面中的位置)最常用的方式是在页面中head部分放置<script>元素,浏览器解析head部分就会执行这个代码,然后才解析页面的其余部分

    找到你的位置(JS在页面中的位置) 我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分. 放在<head>部分 最常用的方式是在页 ...

  2. How Javascript works (Javascript工作原理) (二) 引擎,运行时,如何在 V8 引擎中书写最优代码的 5 条小技巧

    个人总结: 一个Javascript引擎由一个标准解释程序,或者即时编译器来实现. 解释器(Interpreter): 解释一行,执行一行. 编译器(Compiler): 全部编译成机器码,统一执行. ...

  3. python之Phantomjs无界面浏览器引擎自动化测试

    文字搬运工,本文主要介绍PhantomJS功能,其中有屏幕快照功能,为后面更新[python接口自动化脚本更新版本],其中新版本中新增自动发送邮件功能正文带图片,使用PhantomJS截取图片后发送邮 ...

  4. IE/Firefox/Chrome等浏览器保存Cookie的位置

    IE/Firefox/Chrome等浏览器保存Cookie的位置 原文  http://smilejay.com/2013/04/browser-cookie-location/   前面写了篇长文( ...

  5. 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名

    1)关于 pageX, clienX,offsetX,layerX pageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 clientX:鼠标在页面上可视区域的位 ...

  6. 如何获取浏览器URL中查询字符串的参数

    首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主 ...

  7. Innodb引擎中Count(*)

    select count(*)是MySQL中用于统计记录行数最常用的方法,count方法可以返回表内精确的行数. 在某些索引下是好事,但是如果表中有主键,count(*)的速度就会很慢,特别在千万记录 ...

  8. python3+selenium框架设计05-配置文件和浏览器引擎类

    python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如u ...

  9. JS获取浏览器URL中查询字符串的参数

    首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主 ...

随机推荐

  1. LR实现处理PUT方法的案例

  2. uni-app学习(五)好用的插件3

    1. uni-app学习(五)好用的插件3 1.1. 分享推广页面 分享推广页面,分享第三方.保存二维码.复制推广地址 模板地址 示例 这个用到的几率还是蛮大的,可以直接拿来修改下用 1.2. 教育A ...

  3. visual studio之X64调试问题

    这个问题没有解决. 只能X86啦!

  4. JS高阶---对象创建模式(5种)

    [前言] 函数高级部分先看到这里,接下里看下面向对象高级部分 .对象创建模式 .继承模式 [主体] (1)Object构造函数模式 案例如下: 测试结果如右图所示 (2)对象字面量形式创建 案例如下: ...

  5. 201871010131-张兴盼《面向对象程序设计(java)》第八周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  6. InfoQ一波文章:菜鸟核心技术/Intel发布CPU新架构3D堆栈法/BDL/PaddlePaddle/百度第三代Spider/Tera

    菜鸟智慧新物流核心技术全解析   孟靖 阅读数:63192018 年 12 月 14 日 16:00   2018 年天猫双 11 全球狂欢节已正式落下帷幕,最终成交额定格在 2135 亿元,物流订单 ...

  7. 四则运算————javaweb版

    1.设计思路: 定义一个类arithmetic,在该类中的定义相关成员,随机产生的题目以及答案用数组承接,在第一个jsp里面用户输入题目数量以及设置做题时间,将这两个数传到第二个jsp页面,在此页面定 ...

  8. idea中怎么忽略(ignore)掉 .idea等文件

    idea需要下载一个专门的plugins 来ignore .idea *.iml等文件 可以在https://plugins.jetbrains.com/idea/plugin/7495–ignore ...

  9. SQL Server 迁移数据库 (一)导入和导出

    今天正好换服务器,记录一下迁移数据库的过程. 以前经常用备份还原法,今天试试‘SQL Server 2016 导入和导出数据’这个看怎么玩. 1. 建数据库结构 1.1 在需要迁移的数据库名字上右击, ...

  10. NLP之预训练

    内容是结合:https://zhuanlan.zhihu.com/p/49271699 可以直接看原文 预训练一般要从图像处理领域说起:可以先用某个训练集合比如训练集合A或者训练集合B对这个网络进行预 ...