如今我们每个人都是小程序的使用者,小到日常的健康码,大到各种*务事项办理。究其因,对于用户来讲小程序无需下载,用完即走而且其具备轻量、流畅的使用体验;对于开发者来讲便捷简单的开发流程,学习的门槛极低,这也是小程序能够逐步受到广大使用者和开发者的认可和欢迎的原因。
与H5技术相比,为什么小程序能够支持起足够优秀的性能呢?其背后的技术逻辑是什么?
小程序特殊的双线程架构
我们都知道,传统Web的架构模型是单线程架构,其渲染线程和脚本线程是互斥的,这也就是说为什么长时间的脚本运行可能会使页面失去响。
而小程序能够具备更卓越用户体验的关键在于起架构模型有别于传统Web,小程序为双线程架构,其渲染线程和脚本线程是分开运行的。渲染层的界面使用了WebView进行渲染,逻辑层采用JsCore线程运行JS脚本。
逻辑层:创建一个单独的线程去执行JavaScript,在这个环境下执行的都是有关小程序业务逻辑的代码,只能够运行JavaScript的沙箱环境,不提供DOM操作相关的API,所以不能直接操作UI,只能够通过setData更新数据的方式异步更新UI。
渲染层:界面渲染相关的任务全都在WebView线程里执行,通过逻辑层代码去控制渲染哪些界面。一个小程序存在多个界面,所以渲染层存在多个WebView线程。
双线程具备的优势
1、对性能具有明显的提升
回想一下,在我们进行Web开发的时候,渲染进程和逻辑进行是互斥的,这是为了防止在渲染过程中,我们使用js对dom进行操作,造成页面紊乱甚至崩溃。现在我们使用双线程来进行管理小程序,就不存在js堵塞渲染的问题,双线程同时运行,提升性能。
2、用户隐私数据安全管控能力提升
我们都知道基于Web技术来渲染小程序,是存在一些不可控因素和安全风险的。因为Web技术非常灵活开放,我们可以使用Javascript去任意地控制页面的跳转或者改变页面上的任何内容,Javascript还可以通过操作DOM,直接获取小程序内部的一些敏感数据,比如用户信息等等,那么小程序将毫无安全可言。
双线程架构下,不允许开发者随意操作BOM和DOM,这对用户的隐私数据具有一定的保护作用,安全水平进一步提升。
如何在移动研发中发挥小程序双线程的价值
时至今日,移动研发中越来越多产品格外重视用户体验的大背景下,小程序也成为重要业务承载利器。除了在