1 运行环境
微信小程序分为逻辑层和渲染层,分别运行在各自的线程中。两个线程之间的通信经由微信客户端(Native)
做中转,逻辑层发送网络请求也经由Native
转发。
渲染层使用WebView
进行渲染,逻辑层采用JSCore运行JS脚本。因为一个小程序可能存在多个界面,所以渲染层也可能有多个WebView线程。
小游戏则是在小程序的基础上提供了WebGL接口的封装,使渲染能力和性能有大幅提升。
在普通网页开发中,开发者需要面对各式各样的环境,PC端有Chrome、IE、QQ浏览器等,移动端有Safari、Chrome以及系统中的各种WebView。而小程序帮助开发者抹平了这些差异,只要专注于微信环境就可以了。
小程序通过把复杂的各式环境封装起来,给上层开发者提供了简单、统一的接口,换句话说,就是小程序框架把麻烦的各种平台适配工作都做完了。
小程序在各个平台采用的脚本执行和渲染环境也各不相同,如下。
运行环境 | 逻辑层 | 渲染层 |
iOS | JavaScriptCore | WKWebView |
Android | V8 | XWeb(腾讯自研,基于Mobile Chrome内核) |
PC | Chrome内核 | Chrome内核 |
小程序开发工具 | NW.js | Chrome WebView |
2 相关技术
2.1 NW.js
NW.js
和Electron
类似,是一个用JS语言开发跨平台桌面应用的框架,比较有名的WhatsApp、钉钉、微信开发者工具都用它开发,但现在发展比Electron落后很多。
2.2 浏览器内核
WebKit是个历史很悠久的浏览器内核,它源于KDE开源项目,兴盛于苹果的Safari浏览器。WebKit由两部分组成,一部分是WebCore排版引擎,用来解析HTML语言和CSS框架;另一部分是JavaScript Core引擎,用来执行JS脚本。Google在WebKit开源项目基础上,继承了WebKit的WebCore部分,但是把JS引擎替换成了自家的V8引擎,大大提高了JS脚本的执行速度。同时,Google还对WebKit源代码重新梳理,提高了代码的可读性,并且编译效率更高,从而拥有了自己的开源项目–Chromium。
目前国内比较知名的QQ浏览器、360浏览器、搜狗浏览器等都是基于Chromium内核开发的。
2.3 Chrome和Chromimu
Chrome和Chromimu不是等同关系,Chromimu是个开源的浏览器内核,但Chrome浏览器不是开源的,只是一个基于Chromimu开源代码的商业产品。