什么是小程序
小程序是集成在大的移动app(常见的微信,支付宝)内的可以使用app提供的原生能力的,并且可以实现相较于传统h5 更快的加载能力,原生的体验的‘特殊’的h5
小程序和h5的区别
运行环境
- 小程序是运行在特定的APP(如微信,支付宝)内的一个独立的运行环境。
- H5则是运行在遵循相同的Web标准的浏览器内
开发环境和工具
- 小程序的开发需要使用特定的开发工具,如微信开发者工具,阿里巴巴的IDE等。即使市面上出现了uniapp之类的小程序框架,但是最终也是编译为小程序开发工具能识别的目录结构和代码。
- H5的开发工具是只要能编辑html和css,js的文本编辑器都可以。
渲染机制
-
相比h5的单线程,即H5 页面的渲染和逻辑都在同一个线程(主线程)中运行,小程序采用的是双线程架构,逻辑层和渲染层是分开的,它们运行在两个不同的线程中。所以在小程序中js的执行不会影响到页面的加载,相比h5有了更快的加载能力,而js和dom之间通过数据桥(Data Bridge)的机制实现通信,两个线程是相互独立的,意味着,小程序在进行页面渲染和处理应用逻辑时,可以利用多核CPU的并行计算能力,提高运行效率。缺点是处理复杂动画或者交互是需要两个线程频繁通信。导致页面可能出现顿卡。
- 区别:小程序中是不能访问DOM 和 BOM 的相关的 API。也就导致了很多三方库不能使用了。
获取系统权限面
- 小程序可以使用宿主允许的所有权限,也就是app的权限
- h5只能使用浏览器提供的特定的api
更新机制方面
- 在某个小程序第一次启动时,宿主app需要下载小程序代码包。第二次访问的时候,宿主app会判断小程序代码包是否有更新,如果有更新,会下载新的小程序包,为了减少下载的时长,一般每次上传小程序包是,都会生成差量的diff包。这里补充一点,相比h5访问,下载代码包后,可以在二次访问的时候减持用户的访问请求,直接读本地。从而快速打开app
- 而h5的更新机制则依赖于浏览器的缓存策略,以及开发者生成的hash。