小程序系列--Presenter简单使用
在wx小程序的开发过程中,大部分的逻辑代码都写在Page对象中(类似Activity)。如果逻辑很多的话,会导致Page.js越来越臃肿,影响代码的阅读与修改。所以,可以把Android中的MVP思想应用到Page中。
wx的Page本身用的是 VM 的思想,将数据与View绑定,通过setData() 将数据映射到UI。非常像 DataBinding,但比DataBinding简单很多且不是双向绑定。可以新建文件夹presenter 将所有的 presenter JS文件放在这个目录下。
var url = require("../network/urlConfig.js").url;
var httpUtils = require("../network/HttpUtils.js");
function loginRequest(data, resp) {httpUtils.request({
url: url.loginUrl,
data: data,
success: function (data) {
httpUtils.saveHttpHeader(data.userId, data.token);
if (resp)
resp.success(data);
}
}
);
}function login(resp) {
//wx登陆
wx.login({
success: function (res) {
if (res.code) {
var code = res.code;
//wx获取用户信息
wx.getUserInfo({
success: function (res) {
var userInfo = res.userInfo
var nickName = userInfo.nickName
var avatarUrl = userInfo.avatarUrl
var gender = userInfo.gender //性别 0:未知、1:男、2:女
var province = userInfo.province
var city = userInfo.city
var country = userInfo.country
//注册/登陆逻辑
loginRequest(
{ //data 对象
code: code,
nickName: nickName,
avatar: avatarUrl,
gender: gender,
city: city,
province: province
}, { //response 对象
success: function (data) {
if (resp) {
resp.success(data);
}
}
});
},
})
}
}
})
}//暴露方法
module.exports = {
login
}
在Page 中直接调用
var presenter = require("../../presenter/UserPresenter.js");
Page({
data: {},onLoad: function () {
presenter.login({
success: data => {
console.log(data);
}
});
},
})
详细代码参见源码
【小程序系列--Presenter简单使用】gitHub源码
推荐阅读
- 一个小故事,我的思考。
- 家乡的那条小河
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 昨夜小楼听风
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2019.4.18感恩日记
- 那件我们忽略的小事叫感恩
- 你有婚内虐待行为吗()