小程序也属于App的一种,那么它和咱们如今流行的原生App(IOS、Android)相比,有什么区别和优点呢?小程序
首先,从技术上来说,目前App的主流开发方式有三种:Web App 、Native App 和 Hybrid App。好比:缓存
在微信”发现“里面有一个”购物“入口,点进去打开的是京东的移动购物页面,这个页面实际上就是一个Web App。支付宝的众多小服务也是Web App,这类App其实就是咱们常常在PC上浏览的网页,只不过加入了响应式的设计让它适合在移动端显示和运行,所采用的技术依然是 JavaScript、CSS 和 HTML。相对于其余两种APP,Web App 具备开发简单、高效,更新灵活、跨平台、大量的网页应用稍做调整便可放在移动端运行。但缺点与优势并存,Web App 性能、体验极差,没法使用照相机、系统通知、本地缓存等原生特性微信
Native App 也称原生 App 。这种 App 不是采用 JavaScript、CSS 及 HTML 开发,而是使用 Objective-C (IOS) 或者 Java (Android) 开发。微信、支付宝 等都属于这类 App,是目前主流的开发方式。Native App 具备性能、体验很是良好,组件支持完善、接口丰富等特色。但Native App 最大的缺点在于,不能跨平台,有多少个平台就要开发多少版本,如今主要有 IOS 和 Android 两个主流平台,还好 Windows Phone 已没了踪迹。模块化
Hybrid App 也称为混合式 App 。Hybrid App 看上去像一个 Native App,但实质上 Native 技术在这里只是做为一个容器,将 Web App 包裹了起来,在容器内部实质运行的仍是网页。Hybrid App 更像是 Web App 与 Native App 的混合体。与纯粹的 Web App 相比,Hybrid App 会有一部分访问原生组件(相机、加速器)的能力。事实上,目前主流的应用中,纯粹的原生的 App 不多,绝大多数都属于混合式 App 。好比,常见的京东、淘宝等电商类 App ,因为商品及业务变化很是频繁,须要常常调整,因此这类 App 的主要页面都是采用 Web 技术来构建,只是用 Native 包装了一下。Hybrid App 具备接近于 Native App 的体验、开发效率高、跨平台等特性。工具
那咱们如何界定,哪些 App 属于“原生”,哪些 App 属于“混合”呢?这个要看 Web 页面在 App 中所占的比例,若是绝大多数页面都采用 Web 技术构建,那么咱们称为混合式 App ;而若是只有少数页面采用 Web 技术,咱们称为原生应用。性能
那么小程序属于以上三种的那一种?严格意义上来讲,它不属于以上三种中的任何一种,在实现的技术上小程序同传统的 Hybrid 仍是有很大的不一样的。小程序采用 JavaScript 和 CSS 这类常见的 Web 技术开发,但它又不使用 HTML ,它同 Web 没有直接的联系。小程序其实是将一系列本身定义的组件编译成了对应平台(IOS、Android、PC)的相应可运行组件,以提升运行性能。若是必定要将小程序归并到以上三类 App 中,可能 Hybrid App 更合适:非原生,但使用到了 Web 技术(JavaScript 和 CSS)。开发工具
相比于 Native App,小程序具备 Hybrid App 的一些优点:spa
同时,小程序还具备一些它独有的特色:设计
可是,时间没有完美的事物,计算机世界里也没有完美的技术,你觉得的优点在另外一方面却成了缺点:接口
不会。连 Hybrid App 都没法撼动 Native App 的地位,又况且小程序自己只是 Hybrid App 的一个子集,运行在微信这个 Native App 之下呢?除了 Hybrid App 自己与 Native 技术的差距,微信对小程序还附加了诸多限制和自身定位也很是明确——作低频和业务逻辑不复杂的应用。