微信小程序

127 阅读2分钟

小程序与普通网页开发的区别

  1. 网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应。而在小程序中,二者是分开的,分别运行在不同的线程中。
  2. 网页开发中可以使用到各种浏览器暴露出来的DOM API,进行DOM选中和操作。而如上文所述,小程序的逻辑层和渲染层是分开的,逻辑层运行在JSCore中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API。这一区别导致了前端开发非常熟悉的一些库,例如jQuery、Zepto等,在小程序中是无法运行的。同时JSCore的环境同NodeJS环境也是不尽相同的,所以一些NPM的包在小程序中也是无法运行的。

小程序的宿主环境

我们成微信客户端给小程序提供的环境为宿主环境。小程序借助宿主提供的能力,可以完成许多普通网页无法完成的功能。

小程序的运行环境

小程序的运行环境分成渲染层和逻辑层,几种WXML模板和WXSS样式工作在渲染层,JS脚本工作在逻辑层。

小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView进行渲染;逻辑层采用JsCore线程运行JS脚本。小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端做中转,逻辑层发送网络请求也经由Native转发。

JSCore

JSCore是Webkit默认内嵌的JS引擎 V8是Chrome内嵌的JS引擎

WebView

webview是原生应用中的浏览器引擎

微信小程序开发工具

  1. WEPY 腾讯官方开源的小程序组件化开发框架
  2. MpVue 美团出品,使用Vue.js开发小程序
  3. Taro 京东出品,使用React语法规范来开发小程序