H5 和小程序架构有什么差异

我们知道像是一般我们常用到的 App 都是 hybrid 模式的,特别是例如支付宝、微信、抖音、美团之类的都是以原生+H5的形式进行业务的承载,但是到了后面这些 App 又不约而同的在其中增加了小程序的运行能力。

如果我们对技术层面进行分析会发现,不管是 H5 还是小程序,其实他们的核心都是 Webview。

说到这里我们先搞清什么是 Webview?

用比较官方的语言来讲 WebView 是 WebKit 框架中的核心视图类,用于管理 WebFrame 和 WebFrameView 类之间的交互。要在应用程序中嵌入 web 内容,只需创建一个 WebView 对象,将其附加到窗口,并向其主框架发送一个 load 消息。

用更加直白的语言来翻译就是在移动端系统中,内嵌的可以用来展示 Web 应用的组件,这让移动端可以像打开浏览器一样打开页面。

回到最开始说到的不管是 H5 还是小程序,其实他们的核心都是 Webview,但是他们的核心架构还是有一些区别的,这里我们就进行具体的一些分析和对比。

H5的架构与流程

在他们的架构中最关键的就是渲染流程和通信流程。

1、H5的渲染流程

单看 H5 的渲染流程其实类似于传统的 Web 应用,先由 Native 打开一个 WebView 容器,WebView 就像浏览器一样,打开 WebView 对应的 URL 地址,然后进行请求资源、加载数据、绘制页面,最终页面呈现在我们眼前。

2、H5的通信流程

H5 方案的通信流程也较为简单,由 DOM 触发事件,像 Vue 或者 React 构建的 Web 应用会响应事件,然后通过数据驱动,更新视图。

小程序的架构与流程

小程序的渲染和通信流程和 H5 就有较大的区别,特别是小程序采用了双线程技术,相较于H5 会有一定的优势,下面我们具体来看看。

1、小程序的双线程

我们先来回顾下,传统的 H5 开发中,页面渲染和 JavaScript 的执行是在同一个线程中完成的,这就导致了渲染和 JavaScript 执行互相影响的问题。

小程序引入双线程技术的原因也正因可以解决这个问题,简要来讲就是让小程序将渲染和逻辑分离到不同的线程中,去提高渲染的速度和效率。

再来看看双线程技术具体包括的渲染线程和逻辑线程。

渲染线程

渲染线程顾名思义就是负责页面的渲染和绘制,具体的原理是通过解析和编译小程序的代码构建页面树和组件树,并将其渲染到屏幕上。渲染线程与底层的图形系统是紧密配合的,我们会利用硬件加速等技术快速绘制页面。

这里还要说明下,界面渲染相关的任务全都在 WebView 线程里执行的,再通过逻辑层代码去控制渲染哪些界面。 另外需要提醒的是,一个小程序如果存在多个界面,那么渲染层存在多个 WebView 线程。

逻辑线程

逻辑线程负责处理小程序的逻辑和交互。

会按照小程序的 JavaScript 代码,专门处理用户的输入信息和 even,并更新页面的状态。

这样做的目的是通过将逻辑和渲染分离到不同的线程,逻辑线程能够独立执行,不会阻塞页面的渲染,保证了小程序的快速响应和流畅的交互体验。

2、小程序的通信流程

小程序的通信流程也并不复杂,整个流程可以这样理解:触发的事件首先需要传递给 Native,再传递给逻辑层,逻辑层处理事件,再把处理好的数据传递给 Native,最后 Native 传递给渲染层,由渲染层负责渲染。

小结

H5 和小程序虽然说在 hybrid 应用中都有被应用,但他们之间的体验度和产品的完整性都有一定的差异,究其核心原因是因为他们在架构上有着不同的流程和处理办法,技术的持续发展和创新出现了小程序这种更为完善和先进的技术形态,也让小程序能够快速的发展和增长。

相关推荐
Csvn3 小时前
性能监控
前端
Csvn3 小时前
构建工具
前端
FRing034 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
kyriewen6 小时前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
IT_陈寒6 小时前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
工控丫丫7 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
jerrywus7 小时前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
孟陬8 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
Zhao-Jichao8 小时前
AI Prompting for Everyone 课程笔记 - P17 图像生成 Imaging Generation
前端
Highcharts.js9 小时前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化