普通网页开发采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互。
小程序开发采用的是 WXML + WXSS + JS 这样的组合,其中WXML 充当的就是类似 HTML 的角色,但比HTML更简单,主要体现在便签的简化和规范上;WXSS 充当的就是类似 CSS 的角色,但是对 CSS 进行了修改和拓展;JS逻辑交互只使用到了JavaScript的核心部分。
从以上来看普通网页开发和小程序开发都是依赖JavaScript,但是又有一定的不同,如下:
DOM:文档对象模型
BOM:浏览器对象模型
由于小程序没有DOM和BOM对象,所以在普通网页开发中非常熟悉的一些库,例如 jQuery、 Zepto 等,在小程序中是无法运行的。
普通网页开发渲染线程和脚本线程是互斥的,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。
小程序的逻辑层和渲染层是分开的,分别运行在不同的线程中:
小程序的逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API;同时 JSCore 的环境同 NodeJS 环境也是不尽相同,所以一些 NPM 的包在小程序中也是无法运行的。
普通网页开发需要对应的环境是各式各样的浏览器:
PC 端需要对应 IE、Chrome、QQ浏览器等;在移动端需要面对Safari、Chrome以及 iOS、Android 系统中的各式 WebView。
小程序开发过程中需要对应的是两大操作系统 iOS 和 Android 的微信客户端,以及用于辅助开发的小程序开发者工具。
运行环境 | 逻辑层 | 渲染层 |
iOS | JavaScriptCore | WKWebView |
安卓 | V8 | chromium定制内核 |
小程序开发者工具 | NWJS | Chrome WebView |
普通网页开发者在开发网页的时候,只需要使用到浏览器,并且搭配上一些辅助工具或者编辑器即可。
小程序的开发需要经过申请小程序帐号、安装小程序开发者工具、配置项目等等过程方可完成。