iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?

解释执行和优化
词法分析、语法分析
GC
Compiler
Interpreter
Parser
使用JSExport协议
使用原生Block
提供原生值对象转换接口
记录JavaScript的原始值
数据传递
JavaScript运行环境的上下文
GC管理
提供虚拟机环境
优势和应用
JSContext和JSValue类的使用
提供前端与原生相互调用的接口
解释执行JavaScript代码的流程
组成
JavaScript调用原生代码
在原生代码中调用JavaScript变量
JSContext的初始化
JSExport协议
JSValue
JSContext
JSVirtualMachine
iOS7后的引入和接口改进
iOS7之前的使用方式
演进和发展
WebKit中的核心引擎
课后作业
小结
JavaScriptCore引擎
JavaScriptCore和原生应用的交互
框架结构
背景
JavaScriptCore

该思维导图由 AI 生成,仅供参考

你好,我是戴铭。
今天这篇文章是原生与前端共舞模块的第一篇,我来跟你聊聊前端和原生之间的桥梁 JavaScriptCore,看看它是什么、能做哪些事儿。
总结来说,JavaScriptCore 为原生编程语言 Objective-C、Swift 提供调用 JavaScript 程序的动态能力,还能为 JavaScript 提供原生能力来弥补前端所缺能力。
正是因为 JavaScriptCore 的这种桥梁作用,所以出现了很多使用 JavaScriptCore 开发 App 的框架 ,比如 React Native、Weex、小程序、WebView Hybird 等框架。
接下来,我们再回过头来看看,JavaScriptCore 的来头是啥,为什么这些框架不约而同地都要用 JavaScriptCore 引擎来作为前端和原生的桥梁呢?
要回答这个问题的话,你还需要了解 JavaScriptCore 的背景
JavaScriptCore,原本是 WebKit 中用来解释执行 JavaScript 代码的核心引擎。解释执行 JavaScript 代码的引擎自 JavaScript 诞生起就有,不断演进,一直发展到现在,如今苹果公司有 JavaScriptCore 引擎、谷歌有 V8 引擎、Mozilla 有 SpiderMonkey。对于 iOS 开发者来说,你只要深入理解苹果公司的 JavaScriptCore 框架就可以了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

JavaScriptCore 是 iOS 中的桥梁技术,连接了前端和原生应用,为二者提供了相互调用的能力。该框架由 JSVirtualMachine、JSContext 和 JSValue 类组成,使原生应用能够执行 JavaScript 代码、访问 JavaScript 变量和执行 JavaScript 函数,同时也允许 JavaScript 调用原生代码。JavaScriptCore 引擎内部由 Parser、Interpreter、Compiler、GC 等部分组成,通过优化器实现对运行频次高的函数或循环的优化。这种交互方式和内部机制为开发者提供了深入了解和充分利用该框架的基础。JavaScriptCore 提供了前端与原生相互调用的接口,通过 JSContext 和 JSValue 类的方法以及 JSExport 协议,实现了前端与原生的互通。这种桥梁技术的优势在于充分利用前端快速编写 UI 和原生对平台特性的天然支持,为开发者提供了更多有趣的可能性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • Ansion
    课后作业: 可以借助JSContext与JSValue的类型转换和OC的Runtime消息转发机制实现动态调用,巧妙避开Export协议; 可以参考JSPatch的实现原理
    2019-06-11
    2
    20
  • WKWebView用不到JavaScripCore吧…毕竟取不到JSContext…
    2019-06-11
    1
    7
  • kevin
    这里讲的方式还是基于uiwebview hybrid开发,wkwebview 还是很大的不同吧,现在用webviewjavascriptbrigde多一些。
    2019-06-11
    1
    5
  • Sunny
    老师,你在文中说“JSContext 会调用 evaluateScript 方法,返回 JSValue 对象。”,应该是生成JSValue 对象,而不是返回吧?
    2019-10-23
    2
    3
  • 戴老师你好,请问后面会讲解通过WKWebview来构建hybrid app吗?目前正在用vue.js写前端,用WKWebview作web容器,不知道业界是怎么打造自己的hybrid app的,还请给些指导,谢谢。
    2019-06-14
    2
    3
  • Xqqq0
    不知道大神会不会讲NSURLProtocol的实战,希望会🙏🙏🙏
    2019-06-11
    3
  • jun
    “JavaScriptCore 框架的框架名是 JavaScriptCore.framework。由于苹果公司的系统已经内置了 JavaScriptCore 框架,而且性能不逊色于 V8 和 SpiderMonkey 等其他引擎,所以前端开发 App 框架就都不约而同将 JavaScriptCore 框架作为自己和原生的桥梁。” 这里会误导人吧,你确定App使用其他JS引擎能通过苹果审核?
    2020-01-19
    1
    2
  • 小千
    我们利用WKUIDelegate,自己处理H5调用的Prompt弹框事件,通过和前端约定好的参数格式,来实现js调用原生。并且支持同步和异步返回js结果。
    2022-04-15
    1
  • 学无止境
    WebViewJavascriptBridge
    2019-06-21
    1
  • 您好戴老师,一直都在听您的课程,现在我很迷茫,一直在做ios原生开发,想学新东西但是不知道该学习什么,烦请戴老师看到能给个指引,感激不尽老师
    2019-12-05
    2
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部