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


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 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
Dec 28 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 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批量删除数据
2007/01/18 PHP
PHP 中的批处理的实现
2007/06/14 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python多线程使用方法实例详解
2019/12/30 Python
Python底层封装实现方法详解
2020/01/22 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
工商学院毕业生自荐信
2013/11/12 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
大学生求职计划书
2014/04/30 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
《藏戏》教学反思
2016/02/23 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python