小程序的渲染机制及双线程技术透析

不管我们对于小程序这种形态存在何种质疑,但不可否认已经融入到我们生活的方方面面,出门打车、扫码、点外卖甚至收能量等等操作都是以小程序进行承载。背后的缘由是小程序足够轻量、便捷、跨平台等特点,为用户提供了丰富的功能和优质的用户体验。

究其核心,小程序能够拥有媲美原生体验的重点在于快速渲染机制,其起到了至关重要的作用。这里就探究下快速渲染机制的实现流程,以及双线程渲染技术和 WebView 在其中发挥的作用。

一、快速渲染实现流程

小程序的快速渲染主要经历以下四个阶段:解析和编译、预加载、页面渲染和绘制与显示。

1、解析和编译

当用户打开小程序时,小程序框架首先对小程序的代码进行解析和编译。这一过程包括将小程序的代码转换成可执行的指令,并生成对应的数据结构,如页面树和组件树。解析和编译过程需要消耗一定的时间,但在后续的页面渲染中能够大大提高效率。

2、预加载

在解析和编译完成后,小程序框架进行预加载。预加载是指在用户进入具体页面之前,提前加载可能需要使用的资源,如图片、样式文件等。通过预加载,小程序能够在用户切换页面时减少加载时间,提高渲染速度。

3、页面渲染

当用户进入具体页面时,小程序框架将页面树和组件树渲染到屏幕上。渲染过程包括计算每个组件的位置和尺寸、应用样式和布局,并生成最终的绘制指令。

4、绘制与显示

小程序框架将渲染得到的绘制指令交给底层的图形系统进行绘制。图形系统会将指令转换成图像,并显示在屏幕上。

二、双线程技术的优势

在小程序的快速渲染中,双线程技术起到了关键的作用。传统的 web 开发中,页面渲染和 JavaScript 的执行是在同一个线程中完成的,这就导致了渲染和 JavaScript 执行互相影响的问题。而小程序引入了双线程技术,将渲染和逻辑分离到不同的线程中,从而提高了渲染的速度和效率。

这里说到的双线程技术包括渲染线程和逻辑线程。

1、渲染线程

渲染线程负责页面的渲染和绘制工作,通过解析和编译小程序的代码,构建页面树和组件树,并将其渲染到屏幕上。渲染线程与底层的图形系统紧密配合,利用硬件加速等技术快速绘制页面。通过将渲染任务分离到独立的线程中,渲染线程可以专注于页面的绘制,不受逻辑线程的影响,从而提高了渲染的效率。

界面渲染相关的任务全都在 WebView 线程里执行,通过逻辑层代码去控制渲染哪些界面。 一个小程序存在多个界面,所以渲染层存在多个 WebView 线程。

2、逻辑线程

逻辑线程负责处理小程序的逻辑和交互。它执行小程序的 JavaScript 代码,处理用户的输入和事件,并更新页面的状态。逻辑线程与渲染线程通过消息机制进行通信,当逻辑线程有新的指令或数据更新时,会将消息发送给渲染线程,触发页面的更新和重新渲染。通过将逻辑和渲染分离到不同的线程,逻辑线程能够独立执行,不会阻塞页面的渲染,保证了小程序的快速响应和流畅的交互体验。

双线程架构

双线程技术的应用使得小程序在渲染和逻辑处理上能够并行进行,提高了整体的渲染效率和用户体验。同时,通过消息机制的通信,实现了渲染和逻辑的解耦,使得开发者可以更加灵活地处理和优化小程序的渲染和逻辑代码。

三、WebView 线程的作用

从双线程技术我们可以看到存在 WebView 线程,但我们在写小程序页面视图时,貌似并不关心 WebView,那 WebView 到底是个什么东西?View 视图层小程序帮我们做了什么?

webview页面

在小程序的快速渲染中,WebView 扮演了重要的角色。WebView 是一种在移动应用程序中嵌入网页内容的组件,它提供了一个可以显示网页内容的容器。

1、显示小程序页面

小程序的页面是通过 WebView 来显示的。当用户打开小程序或切换到不同的页面时,小程序框架会将对应的页面渲染到 WebView 中,使用户可以看到页面内容。WebView 提供了灵活的展示方式,可以支持小程序页面的滚动、缩放等操作。

2、解析和执行小程序代码

WebView 可以解析和执行小程序的代码,将代码转换成可执行的指令。它提供了 JavaScript 执行环境,使得小程序可以运行和交互。通过 WebView,小程序可以实现动态的页面更新和交互效果。

3、提供网络访问功能

WebView 具有网络访问的能力,可以加载小程序中的网络资源,如 HTML、CSS、JavaScript 文件、图片等。通过网络访问,小程序可以获取远程数据,并将其展示在 WebView 中。WebView 的网络访问功能为小程序提供了与服务器交互和数据更新的能力。

4、支持小程序框架的功能

WebView 在底层实现了小程序框架的各种功能,如数据绑定、事件处理、组件渲染等。它能够根据小程序的逻辑和交互规则,将页面内容正确地显示给用户。WebView 提供了与小程序框架的交互接口,使得小程序能够与 WebView 进行通信和交互,实现数据的双向绑定、事件的监听和触发等功能。

小程序打开逻辑

需要注意的是,由于 WebView 是一个嵌入式的组件,其性能和渲染能力也可能受到设备和浏览器的限制。因此,小程序框架通常会对 WebView 进行优化,以提高渲染速度和用户体验。例如,我们通过对小程序代码进行预编译、增量更新和缓存机制等优化措施,去减少 WebView 的解析和编译时间,加快页面的渲染速度。

小程序的快速渲染机制让广大的小程序开发者可以借助这些机制和技术,优化小程序的渲染性能,提供更加流畅的用户体验。

为了提升用户使用体验,「原生+小程序」的开发模式也成为移动研发的另一选择。

小程序容器技术帮助开发者让自有的 App 具备小程序运行能力,只需要通过集成 FinClip SDK 即能快速具备小程序能力。极其轻量,支持微信小程序语法 WXML,也就是说微信小程序代码可以直接复用,无需再二次开发,体验与微信端保持一致。

我们一直在关注移动应用研发效率提升的同时,用户对于应用的使用体验关注度越来越高,如何做好应用的体验也值得开发者重视。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容