小程序是运行在微信或者支付宝上的应用,作用是给用户由于网页的体验,让用户使用更加方便,快捷;这种应用主要有以下三种可能的技术:
1)客户端原生技术:这样的话小程序每次都必须和客户端一起发版和迭代,这显然是不可能的;
2)纯web技术:小程序作为入口部署在微信上,每次点击入口其实跳转到web页面;
2)Hybrid技术:介于客户端技术和web技术之前,客户端作为宿主环境,小程序搭载在宿主环境上,能够进行独立发版;
当今社会,我们都是小程序的使用者,试想下如果小程序打开的时候页面整整齐齐,但是卡顿的要死,你下次还会继续打开吗?
所以在产品设计上,小程序要求渲染快,系能稳定,安全(微信和支付宝上很多用户的隐私数据),这就决定了小程序是一个轻量级的应用,页面上不能有太多复杂的操作;基于此,小程序使用双线程机制,两个线程分别管理渲染层和逻辑层,渲染层主要是使用WebView渲染组件和样式,逻辑层则执行JS脚本;小程序具有以下几点特性:
1)对性能具有明显的提升:回想一下,在我们进行web开发的时候,渲染进程和逻辑进行是互斥的,这是为了防止在渲染过程中,我们使用js对dom进行操作,造成页面紊乱甚至崩溃;现在我们使用双线程来进行管理小程序,就不存在js堵塞渲染的问题,双线程同时运行,提升性能;
2)无法进行BOM和DOM操作:双线程下,不允许我们操作BOM和DOM,对用户的隐私数据具有一定的保护作用;
3)通信不方便:渲染层和逻辑层的通信需要借助native即客户端这个平台;
4)限制开发自由:开发者不能操作dom和bom,只能调用客户端暴露的api,很多这种api是异步的,开发者还需要改变一些编程习惯;