# 小程序与传统开发的对比
相比传统开发,小程序能够帮助开发者获得:
- 快速的加载
- 更强大的能力
- 原生的体验
- 易用且安全的数据开放
- 高效和简单的开发
# 1. 小程序与普通网页开发的区别
小程序的主要开发语言是JavaScript
,小程序的开发同普通的网页开发相比有很大的相似性。对于前端开发者而言,从网页开发迁移到小程序的开发成本并不高,但是二者还是有些许区别的。
网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作。
如上文所述,小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API
和BOM API
。这一区别导致了前端开发非常熟悉的一些库,例如jQuery
、Zepto
等,在小程序中是无法运行的。同时JSCore
的环境同NodeJS
环境也是不尽相同,一些 NPM 的包在小程序中也是无法运行的。
网页开发者需要面对的环境是各式各样的浏览器,PC 端需要面对IE
、Chrome
等,在移动端需要面对Safari
、Chrome
以及iOS
、Android
系统中的各式WebView
。
网页开发者在开发网页的时候,只需要使用到浏览器,并且搭配上一些辅助工具或者编辑器即可。小程序的开发则有所不同,需要经过申请小程序帐号、安装小程序开发者工具、配置项目等等过程方可完成。
# 2. 小程序与 H5,原生应用的对比
# 2.1 H5 移动应用
我们常说的H5
其实也通常可以被视为一种Web App
,相比于我们在桌面端浏览器中打开的网页,主要是增加了一些响应式的设计与交互优化,从而使得这些网页更适合在移动端的浏览器中显示运行。既然是网页应用,那依然是基于JavaScript
,CSS
和HTML
进行实现的,由于是基于各类前端技术栈进行实现,最大的好处就是快速、简单、方便,且有各种技术资料可以参考。
同样,H5
的缺点与优点也是并存的,比如由于技术已经很成熟了,对于前端经验欠缺的新人来说,面对各式各样的框架,模块、任务管理工具,UI 库
可能会出现无从下手的问题;此外相比于原生应用,对于系统权限的获取(比如数据缓存能力,网络通信状态等)都显得比较鸡肋,当低性能的设备加载包含复杂逻辑的页面时,会出现明显的卡顿与延迟问题。
# 2.2 原生应用
原生应用也被叫做Native App
,相比于H5
应用通过前端三大件进行实现不同,原生应用主要会采用iOS
与Android
的专有语言Objective-C(或 Swift)
,Java(或 Kotlin)
进行实现,大多我们所常见的国民应用,比如微信,支付宝等都属于这种原生应用。
既然被叫做「原生应用」,就像操作系统的亲儿子一样,天然在性能与体验上具备优秀的潜质,也有组件库丰富,接口支持完善等各种优势特点。但原生应用最大的缺陷就是不能跨平台研发,以目前的主流市场为例,必须要支持iOS
与Android
两个主流平台。
# 2.3 混合应用
混合应用一般被称为Hybrid App
。简单来说,混合应用就是将原生功能封装成对应的JS
接口,在前端使用H5
来开发对应的App(即 H5 作为内容+原生应用作为壳)
,看上去虽然是一个移动原生应用整体,但实际的页面还是网页,一套代码可以生成iOS
与Android
两种安装包,开发成本较低。
我们常见的淘宝,京东等应用由于更新与优化节奏都十分快速,为了更好的响应「贴近用户」的目标,应用中有的功能通过原生Native
实现,有的功能则通过H5
页面进行实现,这种应用就属于我们所说的混合应用。
# 2.4 小程序
严格意义上来说,小程序并不属于以上 3 种应用的任何一种。小程序主要通过JavaScript
与CSS
这种常见的前端技术进行开发,但又没有完全使用HTML
进行实现,在不同的操作系统中,
JavaScript
代码分别运行在iOS
的JavaScriptCore
与Android
的X5 JSCore
中,各家小程序平台或多或少都有一部分自研的核心,因此渲染视图层的组件也有所不同。