tp5微信小程序全栈开发 十一——前端框架构建与令牌管理,首页、专题、分类等模块编写
2017-11-21 14:35
1156 查看
3、使用Es6构建面相关对象的JS代码及访问API数据
app.json{ "pages": [ "pages/home/home" ] }
home.js
import{Home} from 'home-model.js'; var home = new Home(); Page({ data: { }, onLoad:function(){ this._loadData(); }, _loadData:function(){ var id = 1; var data = home.getBannerData(id); } })
home-model.js
class Home{ constructor(){//构造函数 } getBannerData(id){ wx.request({ url: 'http://z.cn/api/v1/banner/' + id, method:'GET', success:function(res){ console.log(res); return res; } }) } } export {Home};//出口
4、异步回调与箭头函数
由于不是同步,直接相等得不到结果,需要调用回调函数解决办法:再定义一个回调函数,把回调函数作为参数传到getBannerData里面去,当成功取到结果之后,在success方法里面调用回调函数,从而把结果传入home.js里面。
home.js
var data = home.getBannerData(id,this.callBack); callBack:function(res){ console.log(res); } ES6写法 var data = home.getBannerData(id, (res)=>{ console.log(res); });
home-model.js
class Home{ constructor(){ } getBannerData(id,callBack){ w 4000 x.request({ url: 'http://z.cn/api/v1/banner/' + id, method:'GET', success:function(res){ // return res; callBack(res); } }) } } export {Home};
5、构建请求基类(重要)
由于http请求用到的很多,所以建一个基类,保存request方法utils.base.js
import{Config} from '../utild.config.js' class Base{ constructor(){ this.baseRequestUrl = Config.restUrl; } request(params){ var url = this.baseRequestUrl + params.url; if(!params.type){ params.type = 'GET'; } wx.request({ url: url, data:params.data, methord:params.type, header:{ 'conteen-type':'application//json', 'token':wx.getStorageSync('token') }, success:function(res){ params.sCallBack && params.sCallBack(res);//相当于if语句 }, fail:function(err){ console.log(err); } }) } }
由于这个baseUrl用到的很多,不如放到配置文件里面。
urils\config.js
class Config { constructor(){ } } Config.restUrl = "http://z.cn/api/v1/";//这样写在类的外边是为了避免在调用的时候实例化 export {Config};
6、请求基类的应用
pages\home\home-model.jsimport {Base} from '../../utils/base.js'; class Home extends Base{//继承基类 constructor(){ super();//基类构造函数 } getBannerData(id,callBack){ var params = { url:'banner/'+id, sCallBack:function(res){ callBack && callBack(res.items); } } this.request(params); } } export {Home};
base.js
params.sCallBack && params.sCallBack(res.data);//因为所有的都是只要这个数据即可,所以只在回调函数中返回res.data
7、使用数据绑定显示在UI上
再home.js中拿到数据var data = home.getBannerData(id, (res)=>{ console.log(res); //数据绑定 this.setData({'bannerArr':res});
home.wxml
<swiper class='swiper' indicator-dots='true' autoplay='true'> <block wx:for="{{bannerArr}}"> <swiper-item class='banner-item'> <image mode='aspectFill' src="{{item.img.url}}"></image> </swiper-item> </block> </swiper>
8、商品主题UI和数据加载
home-model.jsgetThemeData(callback) { var params = { url: 'theme?ids=1,2,3', sCallback: function (data) { callback && callback(data); } } this.request(params); } }
home.js
home.getThemeData((res)=>{ console.log(res); this.setData({'themeArr':res}); console.log(this.data.themeArr); })
home.wxml
<view class='home-main'> <view class='home-main-theme'></view> <view class='home-main-products'>精选主题</view> <view class='theme-box'> <block wx:for='{{themeArr}}'> <image src='{{item.topic_img.url}}'></image> </block> </view> <view class='home-main-products'></view> </view>
相关文章推荐
- tp5微信小程序全栈开发九——微信登录与令牌
- tp5微信小程序全栈开发 四——构建验证层
- 前端跳槽面试Vue,WebAPP,Webpack,微信小程序电商平台校招面试MySQL性能管理React书城开发
- 微信小程序前端开发框架,自动生成前端代码
- tp5微信小程序全栈开发五——Rest和RestFul
- tp5微信小程序全栈开发七——数据库访问与orm
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
- PHPCMS微信小程序万能API接口模块,快速使用PHPCMS框架开发微信小程序
- 浅谈前端项目发展的四个阶段——库/框架、构建优化、模块化开发、组件化开发和资源管理
- 微信小程序前端开发框架,不用再苦逼逼写代码
- 微信小程序前端开发框架,快速自动生成前端页面
- 前端跳槽面试Vue,WebAPP,Webpack,微信小程序电商平台校招面试MySQL性能管理React书城开发
- “微信小程序商城构建全栈应用”开发小记
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
- tp5微信小程序全栈开发一——流程体系介绍
- 微信小程序基本的开发框架抽取,包括网络请求的二次封装,页面状态管理,常见页面模板封装
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-模块管理按子系统进行分类管理
- C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案
- web前端之锋利的jQuery十一:综合开发,编写购物网首页