因为随着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. RV64I基础整数指令集

    RV64I是RV32I的超集,RV32I是RV64I的子集.RV64I包括RV32I的所有40条指令,另外增加了12条RV32I中没有的指令,还有三条移位指令(slli, srli,srai)也进行小 ...

  2. win10笔记本电脑连wifi显示“无internet,安全”解决办法

    吹一波, 不出意外的话,这应该是网上最全最详细的解决办法......毕竟妹子的电脑遇到了问题,咱一定要给她解决啊. 问题描述:连上了WiFi,显示“无Internet,安全”.但实际上她的电脑是有网的 ...

  3. 一个简单servlet容器

    一个简单servlet容器 2.1 javax.servlet.Servlet接口 Servlet编程需要使用javax.servlet和javax.servlet.http两个包下的接口和类 在所有 ...

  4. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

  5. RNN循环神经网络学习——概述

    循环神经网络(Recurrent Neural NetWork,RNN)是一种将节点定向连接成环的人工神经网络,其内部状态可以展示动态时序行为. 循环神经网络的主要用途是处理和预测序列数据.循环神经网 ...

  6. Google开源PDF软件库

    Google开启了一个叫做PDFium的PDF软件库开源项目,开发人员能够将其纳入各种平台应用中. 据Google的Chromium项目的布道师François Beaufort称,PDFium将被包 ...

  7. 2019-2020 ICPC Asia Hong Kong Regional Contest

    题解: https://files.cnblogs.com/files/clrs97/19HKEditorial-V1.zip Code:(Part) A. Axis of Symmetry #inc ...

  8. [Android] Windows 7下 Android studio 安装 Genymotion 来调试 Android 遇到的问题总结

    一.下载相关软件 1.Android studio  3.1.4 官网下载地址: https://dl.google.com/dl/android/studio/install/3.1.4.0/and ...

  9. Linux性能优化实战学习笔记:第四十七讲

    一.上节回顾 上一节,我们梳理了,应用程序容器化后性能下降的分析方法.一起先简单回顾下.容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的镜像,来管理应用程序的依赖 ...

  10. [LeetCode] 518. Coin Change 2 硬币找零之二

    You are given coins of different denominations and a total amount of money. Write a function to comp ...