禁掉的这些功能,对我们开发来说影响比较显著的应该是字符串转json,以往我们都是通过new Function、eval来处理后台cgi的返回。(移动端一般封装在zepto之类的框架中),小程序开发需要改变一下具体实现。
与浏览器BOM相关的api都是没有的。
在这些BOM中,对开发影响最大的应该是没有cookie。因为其他功能例如storage,小程序有类似的处理方法。而cookie在web开发中是与后台登录相关的。小程序中是没有Cookie的,为了兼容目前大部分web app 的登录管理是使用cookie的。小程序在请求发送时,客户端可以动态的给请求设置Header发送报文的cookie。
注意一下cookie本身不能在客户端进行读写。因为没有cookie,H5中的csrf问题理论上是根本解决了。小程序是否存在其他客户端安全问题,需要技术、时间来检验~
(二) 优化
登录:
H5中,通过微信授权一般采用url重定向的方式获取code;在小程序中,通过wx.login获取code,这样避免了之前登录重定向的问题。
storage:
小程序用storage替代了H5中的localstorage、sessionstorage。storage对每个小程序的大小是10M,支持同步和异步。
微信支付路径不再受限
(三) 不便
1)每个页面是需要手动在app.json中进行注册。如果没有注册,是不执行该页面的。
2)打开的页面有5个的限制,在开发时需要主要控制打开页面的数量
wxss:
wxss 不再支持媒体查询
增加了app的flex布局
引入rpx的概念
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在iPhone6上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
wxss中,不能使用背景图片。这跟框架的设计思想认为一切皆组件有关
wxss动画不支持(目前)
不支持多层选择器.classA {} – 支持; .classA .classB {} – 不支持 (api说明表示只支持单层选择器,重构测试有时多层是支持的)
(四)index.js中的data数据只读
页面js中,data数据是需要约定为只读。框架是单向数据绑定,修改data中的数据不会自动更新View;更新view,需要使用setData()方法。setData()更新View时,与data中的数据进行Diff比较,不同才会更新。这样如果直接修改data,很容易造成data中的数据与View不一致。
setData单次设置的数据不能超过1024kB,需要避免一次设置过多的数据。
template,这些模版具有自己独立的作用域。
支持ES6中的…展开模块数据。