微信小程序 数据访问实例详解


Posted in Javascript onOctober 08, 2016

先简单说一下,小程序的结构

微信小程序 数据访问实例详解

如图所示

1、每个视图(.wxml)只需要添加对应名字的脚本(.js)和样式(.wxss)就可以了,不需要引用,page下面的脚本以及样式都是继承至最外面的app.js , app.wxcss

2、脚本也就是.js文件,他有固定格式:page,是用于获取数据的

3、utils是用来放置数据接口的

数据访问,如果懂点ajax,都不是问题,没啥好讲的

微信小程序,因为IDE太烂了,如果代码再写得难以阅读,整个项目就很难维护了。

因为没有写过app,不知道在app中数据访问是怎么封装的

作为一个有3天工作经验的小程序码农,觉得如果每个页面的数据都是自己去访问数据接口,那就太不OOP了

然后想到了linq to sql,只取了其中的两个方法,原本打算用singelordefault,firstordefault的,想想也麻烦,就用了getbyparams,getbyid,根据条件查找出所有数据,或者根据id获取一条数据

直接看方法吧,有点??铝?/p>

const API_URL = 'http://localhost:4424/api/'

function getApi(url,params){
 return new Promise((res,rej)=>{
  wx.request({
   url:API_URL+'/'+url,
   data:Object.assign({},params),
   header:{'Content-Type': 'application/json'},
   success:res,
   fail:rej
  })
 })
}

module.exports = {
 GetByParams(url,page=1,pageSize=20,search = ''){
  const params = { start: (page - 1) * pageSize, pageSize: pageSize }
  return getApi(url, search ? Object.assign(params, { q: search }) : params)
   .then(res => res.data)
 },
 GetById(url,id){
  return getApi(url, id)
   .then(res => res.data)
 }
}

module.exports = {}是固定写法,里面写一个一个的方法,每个方法用,隔开。

我设置了一个url参数,因为不可能把所有的接口都放在一个conntroller里面,所以url的格式是“conntroller/action”

看一个调用的栗子吧,就明白怎么用了

const req = require('../../utils/util.js')

Page({
 data: {
  imgUrls: [],
  indicatorDots: true,
  autoplay: true,
  interval: 2000,
  duration: 2000
 },
 onLoad(){
  req.GetByParams('home/homebanner')//看这里  看这里  看这里
  .then(d=>this.setData({imgUrls:d,loading:false}))
  .catch(e=>{
   this.setData({imgUrls:[],loading:false})
  })
 }
})

这是index的获取banner图的方法,req.GetByParams('home/homebanner'),这里也可以带参数,也可以空着

最终的页面是这样的

微信小程序 数据访问实例详解

在右边的红色框里面,我们可以看到请求返回的数据,也可以在右边修改数据,界面会跟随着变化,这是关于调试的事情了,容后再议

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
用javascript动态调整iframe高度的代码
Apr 10 Javascript
js取模(求余数)隔行变色
May 15 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
JavaScript常用标签和方法总结
Sep 01 Javascript
JSONObject使用方法详解
Dec 17 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
Jul 10 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
node运行js获得输出的三种方式示例详解
Jul 02 Javascript
Bootstrap Table的使用总结
Oct 08 #Javascript
js HTML5手机刮刮乐代码
Sep 29 #Javascript
原生js的RSA和AES加密解密算法
Oct 08 #Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 #Javascript
微信小程序 实战小程序实例
Oct 08 #Javascript
node.js实现博客小爬虫的实例代码
Oct 08 #Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 #Javascript
You might like
用libtemplate实现静态网页生成
2006/10/09 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
运动会四百米广播稿
2014/01/19 职场文书
预备党员综合考察材料
2014/05/31 职场文书
企业总经理任命书
2014/06/05 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
群众路线专项整治方案
2014/10/27 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
岗位聘任协议书
2015/09/21 职场文书