借其水,行其舟:小程序交互之旅
2024-01-20 13:27:20
大家肯定都看过上面这张图,那是微信小程序的基础架构的图。小程序的渲染层和逻辑层分别由 2 个线程管理:视图层的界面使用了 WebView 进行渲染,逻辑层采用 JsCore 线程运行 JS 脚本。现在就由我带大家一起梳理一下,为什么小程序要这样设计,WebView 和 JsCore 线程又分别是如何运作的。
小程序交互两大核心线程,你知道多少?
最开始先简单介绍一下 WebView,它是一个控件,可以将网页加载到一个窗口。它能够帮助开发者将其他网站的资源加载到自己的网站中。WebView 具有跨平台、多窗口、可定制等特点。在小程序里,WebView 就是用在网页上进行绘制的。
WebView 的线程启动方式是系统创建的,开发者不需要手动创建,这大大减轻了开发者的工作量,简直是程序员福音。它与 Webkit 框架深度融合,并支持各种 Web 标准,如 HTML5、CSS3 和 JavaScript。
另一个 JsCore 线程,它的主要作用是执行 JavaScript 脚本。JavaScript 是一种解释型语言,这也就意味着它不需要编译器,而是一种由引擎(interpreter)解释执行的语言。JsCore 引擎的执行性能极佳,甚至可以和原生 APP 相媲美。
如此巧妙的设计,又是出于怎样的原因?
既然我们已经了解了 WebView 和 JsCore 线程,那么我们就来谈谈为什么小程序要这样设计。
原因之一是为了安全。WebView 是一个沙盒,它可以将小程序与其他应用程序隔离开来。这也就意味着,即使小程序出现安全问题,也不会影响到其他应用程序。
原因之二是为了性能。WebView 可以复用浏览器的渲染引擎,这也就提高了小程序的渲染性能。同时,JsCore 线程也是一个高性能的 JavaScript 引擎,它可以快速执行 JavaScript 脚本。
原因之三是为了管控。WebView 可以控制小程序的访问权限,这也就意味着,小程序只能访问那些被授权的资源。这有利于保护小程序的用户数据安全。
小程序内核两大模块如何联动?
WebView 和 JsCore 线程是如何联动的呢?
WebView 和 JsCore 线程之间通过 JavaScript 桥梁进行通信。JavaScript 桥梁是一个特殊的 JavaScript 对象,它可以允许 JavaScript 脚本调用原生代码。
WebView 可以通过 JavaScript 桥梁调用原生代码来访问小程序的系统功能,例如摄像头、麦克风等。同时,原生代码也可以通过 JavaScript 桥梁调用 JavaScript 脚本来更新 WebView 的内容。
总结
小程序的这种架构设计非常巧妙,它既保证了小程序的安全性和性能,又方便了开发者的开发工作。