小程序与原生 Web 的区别

宿主 API

宿主 APP 暴露了如:拍摄、录音、二维码、支付、地图等 API 给小程序。

此外,宿主 APP 还提供了离线存储功能。通过缓存来提高 APP 打开速度,优化白屏问题。

渲染 & 脚本线程

  • 原生 Web 渲染 & 脚本线程是互斥的(长时间的脚本运行可能会导致页面失去响应)

  • 小程序渲染 & 脚本分别运行在两个线程中

小程序的逻辑层运行在 JSCore中。它既不包含 DOM 和 BOM API,同时也不同于 Node.js。因此,诸如 jQuery 或其他的一些 npm 库是不能运行在小程序中的。

运行环境

逻辑层

渲染层

iOS / macOS

JavaScriptCore

WKWebView

Android

V8

Chromium 定制内核

Windows

Chromium

Chromium

小程序主要运行在 iOS / macOS、Android 和 Windows 上。多个平台的 API 不完全相同,小程序基础库提供了 Polyfill 来弥补差异;并且应该开启样式补全来解决样式兼容问题。

渲染层 & 逻辑层

  • WXML 模板 和 WXSS 样式工作在渲染层,而 JS 脚本工作在逻辑层。

  • 多个页面对应多个渲染层,多个渲染之间通过宿主 APP 通信。

  • JS 脚本的网络请求也通过宿主 APP 进行中转。

Last updated