# 基本概念
# 什么是小程序
小程序是各个app厂商对外开放的一种能力。通过厂商提供的框架,就能在他们的app中运行自己的小程序,借助各大app的流量来开展自己的业务。同时作为厂商如果能吸引到更多的人加入到开发者大军中来,也能给app带来给多的流量,这可以看作一个双赢的业务。那么最终呈现在app中的页面是以什么方式进行渲染的呢?其实还是通过webview,但是会嵌入一些原生的组件在里面以提供更好的用户体验,比如video组件其实并不是h5 video,而是native video。
我们在开发 Android 和 iOS App 时,H5 会出现白屏和页面切换不流畅的问题,与此同时,我们也希望 App 可以随时更新,而不需要上架审核。随着技术的发展,小程序作为替代方案就出现了。
小程序分为微信、支付宝、百度、头条系等多种,在这里我以微信小程序为例介绍下。微信小程序是怎么解决的呢?它主要通过设计一套自己的 Web + 离线包方案来实现,这样既能保证跨平台实时更新,还能保证性能体验。
同时,小程序还能禁掉一些不合适的标签(如外跳 URL 的 A 标签)和 API(如动态执行脚本的API),减少安全问题。此外它还能避免 JS 操作 DOM,从而提升渲染性能。
# 小程序市场优势
- 获客成本低:挂靠超级App,让超级App的用户成为自己的潜在用户。
- 用户访问流程成本低:通过扫一扫、附近的小程序、分享、App内搜索等即可直接访问。
- 更轻量触达:不必再记住网址,不必下载App,点击直达。
- 更方便:功能几乎和App一样全面,包括语音、支付、地理等。
- 用户负担更小:微信账号走天下,减轻个人负担,包括账号、会员、线上、线下。
- 更安全:安全无需自己维护,由超级App直接负责。
# 小程序框架的优势
微信面临的问题是如何设计一个比较好的系统,使得所有开发者在微信中都能获得比较好的体验。这个问题是之前的 JS-SDK 所处理不了的,需要一个全新的系统来完成,它需要使得所有的开发者都能做到:
- 快速的加载
- 更强大的能力
- 原生的体验
- 易用且安全的微信数据开放
- 高效和简单地开发
从小程序说起,小程序解决了什么问题?
- 性能高于h5(base app)
- 微信开放了统一入口,管理菜单
- 宿主APP提供登录
- 宿主APP提供全面分享引流。
- 快速的加载
- 更强大的能力
- 原生的体验
- 易用且安全的微信数据开放
- 高效和简单地开发
# 基本原理-双线程模型
微信小程序的渲染层与逻辑层分别由两个线程管理
- 渲染层的界面使用 webview 进行渲染
- 逻辑层采用 JSCore运行JavaScript代码