【小程序 - 大智慧】深入微信小程序的核心原理
创作时间:
作者:
@小白创作中心
【小程序 - 大智慧】深入微信小程序的核心原理
引用
CSDN
1.
https://blog.csdn.net/qq_53673551/article/details/141925234
微信小程序自2017年上线以来,以其独特的双线程架构和高效的渲染机制迅速赢得了开发者的青睐。本文将深入探讨微信小程序的核心原理,包括其双线程架构、渲染机制、通讯系统、生命周期以及跨端开发框架等内容。
双线程架构
微信小程序的设计与前端浏览器有着本质的区别,它将JavaScript操作层和界面渲染层进行了隔离。具体来说:
App Service(逻辑层):这是一个专门用于执行JavaScript的沙箱环境,无法直接操作DOM或访问浏览器API,只能通过Native异步查询DOM元素并进行操作。小程序的WXML和WXSS会被编译为JS脚本进行注入操作。
Web View(渲染层):负责页面的展示,采用多页面模式,类似于App的多页面结构。每个页面都运行在一个独立的Web View中。
Native(微信客户端):利用微信的缓存机制,提前注入微信SDK、接口请求和组件渲染等功能。
WebView 结构
小程序的页面加载过程可以分为以下几个阶段:
- 启动一个WebView,这在iOS和Android系统上都需要一定的时间。
- 在WebView中初始化基础库,并进行一些性能优化。
- 注入小程序的WXML结构和WXSS样式,以便在接收到页面初始数据后立即开始渲染。
- 每个页面都独立运行在一个页面层级上,通过
wx.navigateTo
创建新的页面层级,通过wx.navigateBack
销毁页面层级。
快速渲染 PageFrame
为了提高渲染效率,微信小程序采用了PageFrame模板机制:
- 利用PageFrame模板生成Web View视图。
- 首次加载时缓存PageFrame模板生成的内容,后续加载时直接使用缓存。
- 初始化Web View地址为
http://127.0.0.1:${global.proxyPort}/aboutblank?${c}
,其中${c}
是对应Web View的ID。 - 监听页面的ready操作,注入执行代码脚本生成最终的Web View地址和执行代码。
编译原理
小程序的WXML和WXSS文件需要经过编译才能在Web View中渲染:
- WXSS通过
wcsc
编译为JS文件,然后注入到Web View中。 - WXML通过
wcc
编译为JS文件,生成虚拟DOM树。对于需要异步获取的数据,会使用虚拟DOM元素进行占位。
通讯系统
小程序的通讯系统基于发布-订阅模式:
- Native层向渲染层和逻辑层注入WeixinJSBridge。
- 通过
invoke
调用Native API,通过publish
和subscribe
实现消息传递。
生命周期
小程序的生命周期包括以下几个关键阶段:
onLaunch
:App主应用开始初始化。onLoad
:页面加载时触发,一个页面只会调用一次。onShow
:页面显示/切入前台时触发。onHide
:页面隐藏/切入后台时触发。onReady
:页面初次渲染完成时触发。onUnload
:页面卸载时触发。
跨端框架
为了应对多平台小程序开发的需求,市面上出现了多种跨端开发框架,其中Taro和uni-app最为流行:
- Taro:采用TypeScript和Rust开发,兼容React和Vue,支持WebPack和Vite。
- uni-app:基于Vue开发,提供了完整的开发工具链和云服务支持。
总结
微信小程序以其独特的架构设计和高效的渲染机制,为开发者提供了一种全新的开发模式。通过深入理解小程序的核心原理,开发者可以更好地利用这一平台,开发出更优质的应用。
热门推荐
股票交易基础规则系列—集合竞价撮合/价格确定原则,连续竞价价格确定原则!
服用深海鱼油能预防心血管疾病吗?
股市挂单的最佳时机是什么?这个时机如何把握?
3种面相堪称“福相”,越老越有福气
深入理解TCP的四次分手过程
TCP协议的"三次握手"过程详解:为什么需要三次握手?
如何训练金毛犬(建立互信关系)
招聘面试怎么做自我介绍?四个流程教你学会完美介绍自己!
格律诗创作意境提升十大建议
更强 更新 更智能——国产超大直径盾构机研制与产业化取得新突破
如何监测数据库更新时间
理财计算的依据有哪些?这些依据在实际应用中如何调整?
如何分析影响黄金的重要数据特征?这些数据特征如何影响市场预期?
2,3,5,7如何运算得到24?三种巧妙解法详解
足迹的足能变成哪些字?足迹的“足”能变成哪些字?妙笔生花,一字千秋!
无人机侦测:光电识别追踪设备(双光)技术详解
第一次坐高铁怎么下车?新手高铁出行全攻略!
Excel中如何将已有文字插入表格?三种实用方法详解
如何将SRM系统与ERP系统进行整合,实现供应链信息化管理?
一月到十二月英语快速记忆
2025教育改革详解:家长如何调整策略助力孩子成长
雅思6分是什么水平?业内人帮你分析
环卫作业服务质量保障措施
清华创业指导课:俞敏洪分享创新创业之道
王者荣耀英雄池深度指南:如何打造全面的游戏实力
油车 vs 电车:一场全面的用车成本与场景对比分析
揭开中医对抗头皮湿疹的神秘面纱:有效改善与最新研究
乾隆帝与十公主的婚姻决策:政治与幸福的交织
电影的框架与人物框架:构建故事的艺术
佛教的三十六佛、十八菩萨、十八伽蓝分别是哪些?建议收藏!