对于 Ajax 在 MUI 框架中的用运以及单 webview 模式中的下拉刷新功能探究
MUI 之 Ajax
mui 框架基于 htm5plus 的 XMLHttpRequest,封装了常见的 Ajax 函数,支持 GET 和 POST 请求,并返回 json、xml、html、text 和 script 数据类型;基于极简主义设计原则,mui 提供了 mui。ajax 方法,进一步简化了三种最常用的 mui。得到(),梅。getJSON()和 mui。post()基于 mui。ajax 方法。
urlType: String 请求发送的目标地址 settingsType: PlainObjectkey/value 格式的 json 对象,用来配置 ajax 请求参数,支持的完整参数参考如下 mui.ajax([settings])方法
post()方法用于 ajax()的简化方法,它直接使用 post 请求向服务器发送数据,而不处理超时和异常(如果需要处理异常和超时,请使用 mui.ajax)方法)。方法是 mui。post(url[,data][,success][,dataType])。上述登录验证码被 mui 替换后。post(),代码更简洁,如下所示:
get()方法和 mui post()方法类似,只是 get 请求方法直接用于向服务器发送数据,而不处理超时和异常(如果需要处理异常和超时,请使用 mui.ajax()方法)。方法是:mui-Get(url[,data][,success][,dataType])。以下是获取服务器新闻列表的代码段。服务器以 json 格式返回数据列表
mui.getJSON()方法是在 mui.get()方法基础上的更进一步简化,限定返回 json 格式的数据,其它参数和 mui.get()方法一致,使用方法: mui.get(url[,data][,success]),如上获得新闻列表的代码换成 mui.getJSON()方法后,更为简洁
单 webview 模式
为了实现下拉刷新功能,大多数 H5 框架通过 DIV 模拟下拉反弹动画。在低端 Android 手机上,DIV 动画经常出现卡住(尤其是在图像文本列表的情况下);通过使用原生 webview 下拉刷新,mui 解决了 DIV 动画卡住的问题,拖动效果更加流畅;这里提供了两种下拉刷新模式,以应用于不同的场景:
动画原理:
在下拉刷新期间,会触发本机下拉刷新控件,并且整个 webview 位置不会更改,因此在拖动过程中不会发生 DOM 重绘。当控件被拖动到某个位置时,将触发动态数据加载和刷新操作。此模式是下拉刷新模式。与双网络视图模式相比,它不创建额外的网络视图,并且具有更好的性能。
使用方法:
在 mui 初始化时设置 pullRefresh 参数,与双 webview 模式下的子页面设置相同。解释:DOM 结构没有特殊要求。您只需要指定下拉刷新容器 ID
模式描述:
优势:更好的性能体现在两个方面:与双 Web 视图相比,不创建额外的子 Web 视图会消耗更少的性能在下拉式拖动期间不进行重绘,这也降低了性能消耗缺点:目前,仅支持“规则”样式及其颜色自定义
动画原理:使用双视图模式下拉刷新创建子视图添加列表;拖动时,会拖动一个完整的 Web 视图,这可以避免 DIV 拖动平滑度差的问题。回弹动画使用本地动画;在 iOS 平台上,H5 动画相对流畅,因此仍在使用 H5 方案。虽然这两个平台的实现不同,但可以使用一组代码在封装后实现 mui 的下拉刷新。
iOS 平台的下拉刷新使用由 mui 封装的区域滚动组件。为了保证两个平台 DOM 结构的一致性,内容页面应该按照以下 DOM 结构统一构造:
模式描述:优势:您可以自定义下拉刷新样式、更改文本等。请参阅有关自定义下拉刷新风格的问题和答案缺点:与单个 webview 相比,它消耗了更多的性能,但比 div 模式要好 DOM 结构需要统一配置
版权声明: 本文为 InfoQ 作者【黎燃】的原创文章。
原文链接:【http://xie.infoq.cn/article/9effffed37b66bcd85fc1793c】。文章转载请联系作者。
评论