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


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里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
JavaScript常用验证函数实例汇总
Nov 25 Javascript
详解Bootstrap创建表单的三种格式(一)
Jan 04 Javascript
JS阻止事件冒泡行为和闭包的方法
Jun 16 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
VeeValidate 的使用场景以及配置详解
Jan 11 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 Javascript
Python机器学习之决策树和随机森林
Jul 15 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输入流php://input介绍
2012/09/18 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
Python的装饰器使用详解
2017/06/26 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
详解Python IO口多路复用
2020/06/17 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
会计系毕业个人自荐信格式
2013/09/23 职场文书
公司培训心得体会
2014/01/03 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
大学生简历求职信
2014/06/24 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书