移动开拓中的Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台……
Native - Web:通过 JavascriptCore,Native 可以直接在 Context 中执行 JS 语句,和 Web 侧举办通讯和交互。
Web - Native:对付 Web 侧向 Native 的通讯,JavascriptCore 提供两种方法,注册 Block & Export 协议。
3. App 中的应用场景
跨平台与热修复 近几年来海表里移动端各类跨平台方案如雨后春笋般涌现,“Write once, run anywhere”不再是废话。这些跨平台技能方案的切入点是在 Web 侧 DSL、virtualDom 等方面的优化,以及 Native 侧 Runtime 的应用与封装,但两头通讯的焦点,依然是 JavascriptCore。 除了对跨平台技能的起劲试探,海内开拓者对热修复技能也发生了极大的热情,同样作为 Native 和 Web 的交错点,JavascriptCore 依然包袱着整个技能布局中的通讯使命。 1. 基于 Web 的热修复技能 对付海内的 iOS 开拓者来说,考核周期、敏感营业、付出分成以及 bug 修复都催生了热修复偏向的不绝试探。在苹果增强考核之前,险些全部大型的 App 都把热修复当成了 iOS 开拓的基本手段,最近在《移动开拓尚有救么》一文中也具体地先容了相干黑科技的宿世此生。在全部 iOS 热修复的方案中,基于 JavaScript、同时也是影响最大的就是 JSPatch。 基于上文的说明,对付离开 WebView 的 Native 和 Web 间的通讯,我们只能行使 JavascriptCore。而在 JavascriptCore 中提供了两种方法用于通讯,即 Context 注册 Block 的回调,以及 JSExport。对付热修复的场景来说,我们不行能把隐藏必要修复的函数都逐一行使协议举办注册,更不能对新增要领和删除要领等举办处理赏罚,以是在 Native 和 Web 通讯这个维度,我们只能回收 Context 注册 Block 的方法。
确定了通讯回收 Block 回调的方法后,热修复就面对着如安在 JS 中挪用类以及类的要领的题目。因为没有行使 JSExport 等方法,JS 是无法找到响应类等属性和要领的,在 JSPatch 中,通过简朴的字符串替代,将全部要领都替代成通用函数 (__c),然后就可以将相干信息转达给 Native,进而行使 runtime 接口挪用要领。
虽然对付 JSPatch 以及其余热修复的项目来说,Web 和 Native 通讯只是整个框架中的一个技能点,更多的实现道理和细节因为篇幅的相关临时不作先容。 2. 基于 Web 的跨平台技能 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |