从开发、发布、运行加载和流畅度和通信方式来说明
APP:APP包应用商店审核后才能上架,运行在操作系统上;
小程序:在APP的小程序开发平台审核通过后才能上线(轻量级),运行在APP上,无法使用浏览器中常用的 window 对象和 document 对象,是APP端规范的标准;
H5:H5域名备案就可以使用,运行在浏览器上,是W3C做的一个开放标准规范;
APP:原生 App 运行在操作系统中,所有的原生组件可以直接调用 GPU 进行渲染;
小程序:运行在微信的进程中,只能通过 WebView 进行渲染;
H5:HTML5应用面对复杂的业务逻辑或者丰富的页面交互时,它的体验总是不尽人意,需要不断的对项目优化来提升用户体验
APP:Android/iOS 多个平台、开发工具、开发语言、不同设备的适配等问题;
小程序:只需要开发一个就可以在 Android/iOS 等不同平台不同设备上运行,规范了开发标准,则简单得多。前端常见的 HTML、CSS 变成了微信自定义的 WXML、WXSS,官方文档中都有明确的使用介绍,开发者按照说明专注写程序就可以,需要调用后端接口时,调用发起请求API;需要上传下载时,调用上传下载API;需要数据缓存时,调用本地存储API;引入地图、使用罗盘、调用支付、调用扫码等等功能都可以直接使用;UI 库方面,框架带有自家 weui 库加成。
并且在使用这些 API 时,不用考虑浏览器兼容性,不用担心出现 BUG,显而易见微信小程序的开发成本相对低很多;
H5:一次发布,多端可以使用,H5 的开发,涉及开发工具(vscode、Atom等)、前端框架(Angular、react等)、模块管理工具(Webpack 、Browserify 等)、任务管理工具(Grunt、Gulp等),还有 UI 库选择、接口调用工具(ajax、Fetch Api等)、浏览器兼容性等等。