【小程序八股文】系列之篇章二 | 小程序的核心机制
前言
上一章中我们主要介绍两个部分的内容:一个是小程序的基础/背景,另外一个是小程序与其他平台的区别。
上一章笔记链接:
【小程序八股文】系列之篇章一 | 小程序基础及与其他产品区别
那么在这一篇章中,我们主要介绍小程序的核心机制,因为核心机制比较重要,所以我把它单独作为一章来写。
三、微信小程序原理与运行机制
这里主要是介绍小程序的原理及运行机制
简述一下微信小程序的原理
-
微信小程序采用
JavaScript、WXML、WXSS
三种技术进行开发,本质就是一个单页面应用,所有的页面渲染和事件处理,都在一个页面内进行,但又可以通过微信客户端调用原生的各种接口 -
微信小程序基于数据驱动的架构模式,也就是它的
UI
和数据是分离的,所有的页面更新,都需要通过对数据的更改来实现。 -
微信小程序是一个双线程的框架,也就是说渲染进程
WebView
和脚本进程JSCore
是互相独立的。这两个进程分别管理微信小程序框架的两个组成部分视图层(也叫做渲染层)和逻辑层。其中,视图层View
用来渲染页面结构,展现UI,逻辑层appService
用来处理业务逻辑、数据及接口调用。它们分别在渲染线程和脚本进程中运行,并通过系统层JSBridge
实现通信,实现 UI 的渲染、事件的处理。(从上面可以看除微信小程序具有三个层次:视图层(View),逻辑层(APP Service),系统层(Native);两个进程:渲染进程和脚本进程)。
微信小程序的双线程的理解
为什么不采用浏览器多线程模式?为什么是双线程?(出发点:安全,快速,方便管控,迭代独立)
上面两个问题都是小程序双线程框架的背景。
-
小程序双线程框架出发点是在保证微信安全的前提下提供一种轻量化,快速便捷的应用程序。这就需要同时兼顾安全和性能。而浏览器采用的是多线程的模式,会为每个标签页添加一个独立的渲染进程,每个进程之间的资源和行为互不干扰,虽然这样可以保证网页独立稳定的运行,但同时也消耗了较多的资源。网站是依赖于浏览器的,有关Web相关的技术比较全面,可以承载一些庞大的应用程序,但微信小程序的宿主是微信,定位也是轻量化,并不需要太过丰富的Web能力,因此,多线程的设计不能够很多好的满足微信小程序设计的初衷。
-
跟网站于浏览器的关系相比,我认为小程序与微信的关系更加接近CodePen这类(一个前端编程神器)在线编程平台中每个程序案例与平台的关系。小程序的版本迭代是独立的,不依赖于微信。