小程序 与 App 与 H5 之间的区别

article/2025/11/10 14:18:20

小程序的实现原理

01

根据微信官方的说明,微信小程序的运行环境有 3 个平台,iOS 的 WebKit(苹果开源的浏览器内核),Android 的 X5 (QQ 浏览器内核),开发时用的 nw.js(C++ 实现的 web 转桌面应用)。

平台渲染js 运行环境
iOSWKWebViewJavaScriptCore
AndroidX5 基于 Mobile Chrome 37 内核X5 JSCore
开发工具Chrome WebViewnw.js

小程序运行时会创建两个线程:View Thread 和 AppService Thread,相互隔离,通过桥接协议 WeixinJsBridage 进行通信(包括 setData 调用、canvas 指令和各种 DOM 事件)。

下述表格展示了两个线程的区别:

线程名称所属模块运行代码原理说明
View视图层WXML/WXSSWebView 渲染wxml 编译器把 wxml 文件转为 js 并构建 virtual dom;wxss 编译器把 wxss 文件转化为 js。
AppService逻辑层JSJavascriptCore 运行无法访问 window / document 对象

两个线程是通过系统层的 JSBridage 来通信的,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。

小程序与 App 的区别

02

  • 运行环境

    原生 App 直接运行在操作系统的单独进程中(在 Android 中还可以开启多进程),而小程序只能运行在微信的进程中。

  • 开发成本

    原生 App 的开发涉及到 Android/iOS 多个平台、开发工具、开发语言、不同设备的适配等问题;而小程序只需要开发一个就可以在 Android/iOS 等不同平台不同设备上运行。

    原生 App 需要在商店上架(Android 需要上架各种商店);小程序只能在微信平台发布。

  • 系统权限

    原生 App 调用的是系统资源,也就是说系统提供给开发的的 API 都可以使用;而小程序是基于微信的,小程序所有的功能都受限于微信,也就是说微信给开发者提供 API 才可以使用,不能绕过微信直接使用系统提供的 API。

    原生 App 可以给用户推送消息;小程序不允许主动给用户发送消息,只能回复模版消息 。

    原生 App 有独立的数据库,可以做离线存储;小程序只能存储到 LocalStorage,无法做离线存储。

    原生 App 需要下载,安装包比较大;小程序无需下载,可以通过小程序码等方式通过微信直接打开。

  • 运行流畅度

    原生 App 运行在操作系统中,所有的原生组件可以直接调用 GPU 进行渲染;而小程序运行在微信的进程中,只能通过 WebView 进行渲染。

小程序与 H5 的区别

03

  • 运行环境

简单来说,小程序是一种应用,运行的环境是微信(App);H5 是一种技术,依附的外壳是是浏览器。

H5 的运行环境是浏览器,包括 WebView,而微信小程序的运行环境并非完整的浏览器,因为小程序的开发过程中只用到一部分H5 技术。

小程序的运行环境是微信开发团队基于浏览器内核完全重构的一个内置解析器,针对性做了优化,配合自己定义的开发语言标准,提升了小程序的性能。

小程序中无法使用浏览器中常用的 window 对象和 document 对象,H5 可以随意使用。

  • 开发成本

H5 的开发,涉及开发工具(vscode、Atom等)、前端框架(Angular、react等)、模块管理工具(Webpack 、Browserify 等)、任务管理工具(Grunt、Gulp等),还有 UI 库选择、接口调用工具(ajax、Fetch Api等)、浏览器兼容性等等。

尽管这些工具可定制化非常高,大部分开发者也有自己的配置模板,但对于项目中各种外部库的版本迭代、版本升级,这些成本加在一起那就是个不小数目了。

而开发一个微信小程序,由于微信团队提供了开发者工具,并且规范了开发标准,则简单得多。前端常见的 HTML、CSS 变成了微信自定义的 WXML、WXSS,官方文档中都有明确的使用介绍,开发者按照说明专注写程序就可以了。

需要调用后端接口时,调用发起请求API;需要上传下载时,调用上传下载API;需要数据缓存时,调用本地存储API;引入地图、使用罗盘、调用支付、调用扫码等等功能都可以直接使用;UI 库方面,框架带有自家 weui 库加成。

并且在使用这些 API 时,不用考虑浏览器兼容性,不用担心出现 BUG,显而易见微信小程序的开发成本相对低很多。

  • 系统权限

微信小程序相对于 H5 能获得更多的系统权限,比如:网络通信状态、数据缓存能力等,这些系统级权限都可以和微信小程序无缝衔接。

而这一点恰巧是 H5 被诟病的地方,这也是 H5 的大多应用场景被定位在业务逻辑简单、功能单一的原因。

  • 运行流畅度

这条无论对于用户还是开发者来说,都是最直观的感受。长久以来,当HTML5应用面对复杂的业务逻辑或者丰富的页面交互时,它的体验总是不尽人意,需要不断的对项目优化来提升用户体验。但是由于微信小程序运行环境独立,尽管同样用 HTML +CSS + JS 去开发,但配合微信的解析器最终渲染出来的是原生组件的效果,自然体验上将会更进一步。

小程序多平台互转原理

04

微信小程序与支付宝小程序有很多相似之处,可以封装两个小程序之间的差异进行转换,从而实现一套逻辑代码运行在两个平台。

项目目录结构:

|-ProjectName|-arch//基础框架|-arch.js//框架入口,只需要导入这一个 js 即可|-cache.js//缓存相关,封装了 LocalStorage|-net.js//网络相关,封装了 网路请求|-page.js//页面跳转相关,封装了导航操作|-phone.js//设备相关,封装了系统信息,打电话,扫码,剪切板,定位,支付|-ui.js//平台 UI 相关,封装了 Toast,Alert,Loading,ActionSheet,NavigationBar|-config//项目配置|-api.js//项目 API 相关,接口参数配置等|-config.js//项目配置,如:平台判断,LocalStorage 的 key|-pages//页面|-home |-home.acss/wxss|-home.axml/wxml|-home.js|-home.json|-utils//工具类|-crypto-js.min.js//加密工具库(按需添加)|-date.js//常用 Date 操作|-money.js//常用 money 操作|-net-api.js//自定义通用 API 请求方式,如:封装统一头部和响应体|-param.js//参数加密(按需添加)
  • API 差异
//微信小程序
wx.setStorageSync("key", "value")//支付宝小程序
my.setStorageSync({key:"key",data:"value"
})

封装后的 API:

function set(key, value) {if (config.isAlipay) {my.setStorageSync({key: key,data: value,});} else {wx.setStorageSync(key, value);}
}
  • 布局差异
<!-- 微信小程序 -->
<view bindtap="onClick"
touchstart="onTouchStart"
touchmove="onTouchMove"
touchcancel="onTouchCancel"
touchend="onTouchEnd"
tap="onTap"></view><!-- 支付宝小程序 -->
<view onTap="onClick"
touchStart="onTouchStart"
touchMove="onTouchMove"
touchCancel="onTouchCancel"
touchEnd="onTouchEnd"
tap="onTap"></view>

可以通过程序进行转换。

小程序平台

  • 微信
  • 支付宝
  • 百度
  • 今日头条
  • 淘宝
  • 抖音
  • QQ

更多文章

https://github.com/jeanboydev/Android-ReadTheFuckingSourceCode

我的公众号

欢迎你「扫一扫」下面的二维码,关注我的公众号,可以接受最新的文章推送,有丰厚的抽奖活动和福利等着你哦!?

如果你有什么疑问或者问题,可以 点击这里 提交 issue,也可以发邮件给我 jeanboy@foxmail.com。

同时欢迎你 Android技术进阶:386463747 来一起交流学习,群里有很多大牛和学习资料,相信一定能帮助到你!


http://chatgpt.dhexx.cn/article/TqskZ84f.shtml

相关文章

小程序webview与H5通信

文章目录 官方介绍注意事项H5和webview的通信webview到H5H5到webview内嵌H5缓存问题小程序关闭&#xff0c;H5音频仍然在播放问题 小程序内怎么调试web-viewtips 官方介绍 https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html 注意事项 网页内iframe的…

微信小程序web-view与H5 通信方式探索

本文作者为奇舞团前端开发工程师 小程序简介 小程序是一种全新的连接用户与服务的方式&#xff0c;它可以在微信内被便捷地获取和传播&#xff0c;同时具有出色的使用体验。 需求 微信小程序 H5 混合开发就是 在一个小程序中&#xff0c;采用部分小程序原生页面&#xff0c;部分…

微信小程序与webview H5交互(内嵌H5跳转原生页面)

在开发中&#xff0c;使用web-view组件内嵌H5页面是非常常见的&#xff0c;但很多人不知道webview内嵌H5如何与原生小程序 交互。下面介绍下实现微信小程序与webview H5交互的方法。 web-view功能描述 承载网页的容器。会自动铺满整个小程序页面&#xff0c;个人类型的小程序…

Python:下载安装包

示例1&#xff1a;安装jieba包 1.全自动安装包 WindowsR&#xff1a;输入cmd pip install jieba / pip3 install jieba 由于下载总出现错误&#xff0c;故选择其他方法进行安装包的下载。 2.半自动安装 1&#xff09;下载安装包的官方网站&#xff1a;jieba PyPI 网盘下…

Python和PyCharm的下载和安装(详细教程)

一.Python的下载和安装 1.点击下方链接进入Python官网&#xff1a; https://www.python.org/downloads 2.根据自己的需求选择python的版本&#xff0c;点击【Download】 3.等待下载完成 4.双击进行安装&#xff0c;勾选添加环境&#xff0c;点击自定义安装 5.勾选后点击【Ne…

Python的下载与安装

一.下载 1.直接下载&#xff1a;有安装包的话可直接下载并安装 2.官网下载&#xff1a;在浏览器的导航栏输入python.org后回车进入官网 &#xff08;官网界面&#xff09; &#xff08;1&#xff09;点击Downloads后选择相应的系统下载python&#xff0c;Windows系统选择Win…

电脑上如何安装python

第一步&#xff1a;下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包&#xff0c;点击进行下载&#xff0c;请注意&#xff0c;当你的电脑是32位的机器&#xff0c;请选择32位的安装包&#xff0c;如果是64位的&#xff0c;请选择64位的安装包&a…

Python的下载和安装教程

今天学习python以及pycharm的下载和安装&#xff0c;参考了好几个博客&#xff0c;在此总结一下安装过程。 注意&#xff1a;在这里说明一下&#xff0c;如果要用pycharm进行python的开发&#xff0c;是要分别下载pycharm和python的&#xff0c;不要只安装pycharm就结束了。 …

怎么在python官网下载python,python的官方网址是什么

python的安装包怎么下载 下载python安装包的方法&#xff1a;1、访问python的官网地址“”2、点击Download下面的Latest后面的python版本3、在跳转后的页面用鼠标滑到最下面&#xff0c;显示的就是python的所有系统的安装包了更多Python知识&#xff0c;请关注&#xff1a;Pyt…

怎么在python官网下载python,官网python怎么下载安装

python怎么安装 在Python官网下载Python安装包&#xff0c;双击打开Python软件。勾选add Python 3.8 to PATH&#xff0c;点击install Now。 安装完成后&#xff0c;点击Close.打开电脑命令提示符&#xff0c;输入Python&#xff0c;按回车键运行。出现版本号&#xff0c;就说…

python官网下载安装教程

1.进入官网&#xff0c;选择自己所需要的版本 官网地址&#xff1a;https://www.python.org/downloads/ 2.选择对应系统的安装包下载 3.下载完成&#xff0c;点击安装包进行安装、配置 不建议安装在C盘 4.确认python是否安装成功 cmd输入命令python&#xff0c;返回安装的pyt…

python官方下载安装教程,python官方下载网站

python下载安装教程 python下载安装教程&#xff1a;自定义安装目录&#xff0c;点击install进行安装&#xff0c;打开cmd窗口&#xff0c;输入python&#xff0c;显示python的版本&#xff0c;安装成功。 Python语言更适合初学者&#xff0c;Python语言并不会让初学者感到晦…

python电脑上怎么下载-Python下载和安装图文教程[超详细]

如今python语言非常火&#xff0c;很多小伙伴都开学习python&#xff0c;但是很多小伙伴在安装python的时候遇到问题&#xff0c;下面我们就想详细介绍介绍python下载和安装的方法。 1、 打开python下载链接https://www.python.org/downloads/&#xff0c;点击自己想要的版本。…

Python的下载安装教程(很详细,初学者也能懂)

文章目录 Python的下载安装配置环境变量可提供远程搭建运行服务点击获取项目源码 Python的下载安装 1.进入Python的官网&#xff0c; http://www.python.org/download/ &#xff0c;这里以下载Windows的Python为例 2.选择下载的版本是3.9.9&#xff0c;双击下载&#xff0c;注…

python软件下载安装教程,如何下载和安装python

python下载安装教程 首先打开浏览器&#xff0c;百度搜索【python】。出现搜索结果后&#xff0c;再进入下图所示的官网中。进入官网后&#xff0c;鼠标移至【download】再选择自己的系统。进入下载页面后&#xff0c;再选择python的版本。 下载完成后&#xff0c;再点击打开…

初入Python —— Python下载

Python是一个较为高级的编程语言。那要怎么使用它呢&#xff1f; 所以&#xff0c;我们要知道如何下载Python。 目录 前言 一、Python下载 1.下载方法&#xff08;一&#xff09; 2.下载方法&#xff08;2&#xff09; 3.下载方法&#xff08;3&#xff09;——Windows版本…

2021:Python的下载安装教程(很详细,初学者也能懂)

文章目录 Python的下载安装配置环境变量喜欢技术的&#xff0c;一起进群交流学习吧&#xff01;&#xff01;&#xff01; Python的下载安装 1.进入Python的官网&#xff0c; http://www.python.org/download/ &#xff0c;这里以下载Windows的Python为例 2.选择下载的版本是…

Python的下载安装(手把手教学)

程序员养成日记第一天&#xff1a;从自主下载安装软件开始~~~ 目录 windows版本 MacOS版本 windows版本 1、进入Python官网 https://www.python.org/downloads/ 2、点击Downloads中的Windows版本 3、进入Windows版本&#xff0c;进行Python版本的挑选&#xff0c;建议P…

BI数据分析从业者从零开始学习财务知识?有哪些入门书籍推荐

商业智能BI项目的特点是面向全行业、全领域的&#xff0c;并且大部分的商业智能BI分析是直接支撑到集团高层管理决策。支撑管理决策的经营分析又离不开财务分析&#xff0c;所以基本上每个商业智能BI项目都会涉及到财务分析相关的内容。 但财务又是一个非常专业的领域&#xf…

理财入门:财务报表(简单介绍,后续入门系列文章写完后,会写实践文章在详细介绍)

文章目录 前言财务报表是什么&#xff0c;有什么用&#xff1f;上市公司的财报通过财报读懂企业的18个步骤系统的投资技能顺序 前言 选出优质生钱资产类型股票是离不开财报分析这项技能的&#xff0c;财报不仅和投资有关&#xff0c;还能分析出家庭财务危机在哪。财报最重要的…