微信团队为小程序定义了新的文件格式,提供了微信底层的API及基础组建,并对小程序的文件代码做编译解析,小程序不是传统意义上的H5页面。
javascript的限制
通过传入字符串来执行代码的能力被禁掉了。
禁掉的原生功能:new Function、eval、Generation。影响字符串转json,以往都是通过new Function、eval来处理后台CGI的返回(移动端一般封装在zepto框架中)。
与浏览器BOM相关的API都没有
BOM(浏览器对象模型),由于小程序不是运行在浏览器中,所以javascript在web中的一些能力都将无法使用,如:document、window等,对开发影响最大的是没有cookie。其他功能如storage,在MINA中有类似的处理方法。而cookie在web开发中是与后台登录相关的。小程序中没有cookie。为了兼容大部分web App的登录管理时使用cookie的,小程序在请求发送时,客户端可以动态地给请求设置Header发送报文的cookie。
小程序相比H5的改进
登录:html5中,通过微信授权采用URL重定向的方式获取code;小程序中,通过wx.login获取code。
存储:小程序用storage替代了H5中的localstorage、sessionstorage。storage对每个小程序的大小是5M,支持同步和异步。
支付路径不再受限。
小程序开发不方便的地方
每个页面需要手动在app.json中进行注册。
打开的页面有5个限制,在开发时需要注意控制打开页面的数量。
小结:
小程序介于原生APP和web app的混合体。通过微信加载,实现类似原生APP的流畅性。相对原生APP来说,小程序更加轻量、实时、跨平台;相对web app来说,小程序资源离线,体验更流畅。