小程序基本原理

目录

小程序的由来

架构:渲染与逻辑的分离

问题

微信客户端打开一个小程序会新开一个进程吗?

JavascriptCore是什么?

小程序的数据是存储在哪个位置? 

小程序包有限制吗?



小程序的由来

在传统WEB开发中,在渲染网页的过程中, 执行Javascript,和解析HTML是两个互斥的过程。

这意味着执行复杂Javascript代码,可能则会阻塞UI渲染,导致网页交互会卡顿或者白屏。(参见浏览器渲染网页流程

从性能(解析JS和HTML并行执行)和安全(对外隔离操作DOM的API)的角度考虑, 微信团队研发小程序。

具体来说。

架构:渲染与逻辑的分离

小程序的运行环境分成视图层和逻辑层,采用双线程模型工作。

逻辑层线程负责:执行JS代码,产生和处理数据。

视图层线程负责:解析页面标签,构建DOM树和Render树,最终渲染页面。  

逻辑层线程产生的数据,通过JsBridge协议,传递给Native层,Native层与渲染线程中的数据进行差异比较,Native层通知渲染线程,依据diff来更新UI元素。

问题

微信客户端打开一个小程序会新开一个进程吗?

答案:是的。 小程序之间要彼此进程隔离,保证数据安全。

JavascriptCore是什么?

JavascriptCore是javascript的一种运行时环境。

在Android/IOS操作系统中,  页面渲染的环境和js的运行环境如下表格所示:

        

IOSAndroid
渲染线程WKWebView在微信自研的X5WebView
逻辑线程javascriptCorev8引擎

小程序的数据是存储在哪个位置? 

  • 微信为每个小程序提供了最大上限为10M本地缓存的能力。不同小程序的缓存不能相互访问。
  • 数据wx.setStorageSync(key,value)/getStorage(key) 是异步通信,数据是在native侧管理的。

小程序包有限制吗?

  • 整个小程序所有分包大小不超过 20M
  • 单个分包/主包大小不能超过 2M

参考链接

小程序如何实现多进程?从隔离角度出发,看完你就会懂! - 云+社区 - 腾讯云

分包加载 | 微信开放文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值