热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tp5微信小程序全栈开发十一——前端框架构建与令牌管理,首页、专题、分类等模块编写

3、使用Es6构建面相关对象的JS代码及访问API数据app.json{pages:[pageshomehome]}home.jsimport{

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){
    wx.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.js


import {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.js

getThemeData(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> 


推荐阅读
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
  • layui表格分页不生效怎么办
    web前端|Layui教程layuiweb前端-Layui教程小程序实例源码,ubuntuip切换,tomcat默认端改为80,爬虫完整源码,微信小程序php接口,seo专业培训班 ... [详细]
  • 微信小程序中如何实现轮播图
    这篇文章主要介绍了微信小程序中如何实现轮播图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带 ... [详细]
  • 微信小程序新手教程wx.request(object) API
    微信小程序新手教程wx.request(object)API,本篇默认已经成功安装微信小程序工具,来和小编一起看看吧wx.request(object)API这里通过干活集中营的A ... [详细]
  • 微信小程序实战之菜谱小程序
    最近突发奇想,想要自己搞个小程序玩儿玩儿,但是鉴于自己是搞后端服务器出身,对于偏前端的微信小程序开发实在是一知半解,尤其是对于css类样式相关,更是无从下手,于是乎,只能从晚上找了 ... [详细]
  • 微信小程序适合做什么?微信小程序详情介绍
    微信小程序是腾讯新开发的功能,目前备受关注的,还有很多用户不是很了解,不知道这个微信小程序适合什么,因此就让小编给大家讲讲吧。微信小程序详情介绍小程序也有很多功能,如果你按照之前的 ... [详细]
  • 微信小程序实现简易计算器功能_javascript技巧
    这篇文章主要为大家详细介绍了微信小程序实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 小程序中如何实现弹出菜单功能
    这篇文章给大家分享的是有关小程序中如何实现弹出菜单功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求点击 ... [详细]
  • 以前都是用php开发微信公众号,很少有人用java来做,我用java来做了一个微信小程序的后台,前端是一个微信商城,没有开发完,但是已经封装了取得openid,wechat-master目录 ... [详细]
  • 微信小程序开发如何实现地图功能
    这篇文章主要讲解了“微信小程序开发如何实现地图功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研 ... [详细]
  • 微信小程序Demo导入的示例分析
    小编给大家分享一下微信小程序Demo导入的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有 ... [详细]
  • 本文主要介绍关于微信小程序,小程序,今日头条,新闻,前端的知识点,对【仿今日头条实时新闻微信小程序项目源码】和【自己怎么弄微信小程序】有兴趣的朋友可以看下由【叶绿体不忘呼吸】投稿的技术文章,希望该技术 ... [详细]
  • 微信小程序地图实现展示线路的方法
    这篇文章将为大家详细讲解有关微信小程序地图实现展示线路的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 知晓推送正式上线!送你 13 亿条模板消息
    「知晓推送」能帮助小程序运营人员有效解决粉丝转化、消息推送、数据分析等多个层面的麻烦事,让小程序推广难、留存差的问题从此成为过去式。在服务上线的这个重要的日子里,贴心的小云专门向” ... [详细]
  • 微信小程序实现星级评分与展示
    这篇文章主要为大家详细介绍了微信小程序实现星级评分与展示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
author-avatar
mobiledu2502917073
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有