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


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 相关文章推荐
JQuery select标签操作代码段
May 16 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
页面右下角弹出提示框示例代码js版
Aug 02 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
Jan 26 Javascript
js中哈希表的几种用法总结
Jan 28 Javascript
Javascript学习指南
Dec 01 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
Mar 01 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
深入理解Antd-Select组件的用法
Feb 25 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 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
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
一百行python代码将图片转成字符画
2021/02/19 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
remote接口和home接口主要作用
2013/05/15 面试题
暖通工程师岗位职责
2014/06/12 职场文书
民族学专业求职信
2014/07/28 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
vue使用element-ui按需引入
2022/05/20 Vue.js