WebView
从客户端开发者的角度来看
WebView 用来展示网页的 view 组件 ,该组件是你运行自己的浏览器或者在你的线程中展示线上内容的基础。使用 Webkit 渲染引擎 来展示,并且支持前进后退等基于浏览历史,放大缩小,等更多功能
简单来说 WebView 是手机中内置了一款高性能 Webkit 内核浏览器,在 SDK 中封装的一个组件。不过没有提供地址栏和导航栏,只是单纯的展示一个网页界面
从前端开发者的角度来看
WebView 可以简单理解为页面里的 iframe 。原生 app 与 WebView 的交互可以简单看作是页面与页面内 iframe 页面进行的交互。就如页面与页面内的 iframe 共用一个 Window 一样,原生与 WebView 也共用了一套原生的方法
扩展
既然我们使用了 WebView 来承载 H5,那么便少不了与 Native 之间发生交互,WebView 所承载的页面,通过 JS 与 Native 进行通信,我们将这个通信的 " 桥梁 " 为 JSBridge。
如果你参与过微信内置浏览器的 H5 开发,会发现一个经常出现的东西,叫做 WeixinJSBridge
JSCore
JavaScriptCore 为原生编程语言 Objective-C、Swift 提供调用 JavaScript 程序的动态能力,还能为 JavaScript 提供原生调用能力以弥补前端能力的不足。
正因 JavaScriptCore 的这种桥梁作用,故而出现了出多使用 JavaScriptCore 开发 APP 的框架,比如 ReactNative、Weex、小程序、WebView Hybrid 等框架
背景
JavaScriptCore,原本是 WebKit 中用于解释执行 JavaScript 代码的核心引擎。
解释执行 JavaScript 代码的引擎自 JavaScript 诞生之日起就有,不断演进,一直发展到现在,比如苹果的 JSCore 引擎、谷歌的 v8 引擎等。
在 iOS7 之前,苹果并没有开放 JavaScriptCore 引擎,如果你想使用 JSCore 的话,就需要手动从开源 WebKit 中编译出来,而且其接口都是 C 语言,这对于 iOS 开发者而言非常不友好。
在 iOS7 之后,苹果公司将 JavaScriptCore 框架引入 iOS 系统,并将其作为系统级的框架开放给开发者使用。此时,接口已经是 Objective-C 进行封装的了,这对 iOS 开发者来说就十分友好了。
关系
WebView 包含 JSCore