微信小程序基础知识记录

242 阅读2分钟

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

小程序底层原理

小程序最终的呈现形式,是 WebView + 原生组件,Hybrid 方式。 渲染层:界面渲染相关的任务全都在 WebView 线程里执行,一个小程序存在多个界面,所以渲染层存在多个 WebView线程 逻辑层:一个单独的线程执行 JavaScript,在这个环境下执行的都是有关小程序业务逻辑的代码,就是通过图中的 JsCore 线程来运行 JS 脚本 这两个线程都会经过微信客户端( Native )中的 WeixinJsBridage 进行中转通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理

渲染逻辑

在渲染层把 WXML 转化成对应的 JS 对象(虚拟DOM)。 在逻辑层发生数据变更的时候,通过宿主环境提供的 setData 方法把数据从逻辑层传递到 Native,再转发到渲染层。 经过对比前后差异(diff算法),把差异应用在原来的 DOM 树上,更新界面。

小程序和H5的区别

环境方面 从运行环境方面开看,H5 的宿主环境是浏览器,只要有浏览器,就可以使用,包括APP中的 web-view 组件,以及小程序提供的 web-view 组件 拿微信小程序来说,它是基于浏览器内核重构的内置解析器,它并不是一个完整的浏览器,官方文档中重点强调了脚本内无法使用浏览器中常用的 window 对象和 document 对象,就是没有 DOM 和 BOM 的相关的 API,这一条就干掉了 JQ 和一些依赖于 BOM 和 DOM 的NPM包 系统权限 H5系统权限不够,小程序拥有 Native App 的流畅性能