> For the complete documentation index, see [llms.txt](https://gyx8899.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gyx8899.gitbook.io/blog/docs/miniprogram.md).

# 小程序

采用了 Hybird - 混合的架构模式

## 小程序的双线程

* 渲染线程：使用 Webview 渲染 UI。
* 逻辑线程：使用类似 Web Worker 的独立线程运行逻辑。通过 setData 更新数据的方式异步更新 UI。

## 小程序的端侧资源更新机制

> * 未启动时： 指的是小程序处于非活跃状态时（比如处于后台）。微信客户端会在“若干个时机”去检查缓存中的小程序有没有新版本，如果有会默默把新版本资源拉取到本地缓存中。
> * 冷启动时： 小程序被销毁重新打开后会进入冷启动状态。微信客户端会主动检查是否有新版本，同时会向用户展示缓存中的旧版本。有新版本的话会默默地拉取到本地，然后在用户再次触发小程序冷启动时展示给用户。也就是说，需要两次冷启动才能将最新版本的小程序展示给用户。

## 小程序开发者工具

* 二维码预览时效 25分钟

## 特点

* rpx（responsive pixel）: 可以根据屏幕宽度进行自适应

  |      设备      | 屏幕宽度       | rpx换算px        | px换算rpx       |
  | :----------: | ---------- | -------------- | ------------- |
  |      型号      | W 像素       | W / 750        | 750 / W       |
  |    iPhone5   | 320x2=640  | 1rpx = 0.42px  | 1px = 2rpx    |
  |    iPhone6   | 375x2=750  | 1rpx = 0.5px   | 1px = 2rpx    |
  | iPhone6 Plus | 540x2=1080 | 1rpx = 0.552px | 1px = 1.81rpx |

## 踩坑记录

* 人民币货币符号显示问题：`￥` 在 Android 中显示 `￥`，但应该显示`¥`

> 复制`¥`，解决此问题
