第八章 小程序后端开发

8.1  比目后端云简介

一个完整的小程序系统,不但需要前端的展现,而且需要后端服务器的支撑,以提供数据服务。也就是说,开发一个真正完整的小程序应用,需要前后端的相互配合。小程序与远程服务器之间提供HTTPS传输协议进行数据交换,如图所示。

      除了自己搭建服务端以外,还可以利用一些网络公司提供的云服务来进行小程序后端的相应开发。本章主要讲解利用比目网络科技有限公司提供的Bmob后端云进行小程序后端开发。
      Bmob后端云专注于为移动应用提供一整套后端云服务,能帮助开发者免去几乎所有服务器端的编码工作,大幅度降低开发成本和开发时间。
     Bmob提供了小程序软件开发工具包(Software Development Kit, SDK),让用户拥有强大的后端服务。嵌入Bmob小程序SDK后,开发工程师可以更加专注于编写前端代码和优化良好的用户体验,而不必担心后端的基础设施。
     Bmob提供了成熟的WebSocket信道服务,降低了开发者使用WebSocket通信的门槛。同时也满足了小程序需要HTTPS与服务端通信的需求。

     Bmob还提供了短信验证功能,只需几行简单的代码,即可实现微信小程序的用户登录、富媒体文件上传、发送短信通知和微信支付等功能。

 8.1.1 注册Bmob账号

进入Bmob官方网站(www.bmob.cn)后,单击右上角的“注册”按钮,在跳转页面填入姓名、邮箱,并设置密码,确认后到邮箱激活Bmob账户,即可拥有Bmob账号。

8.1.2  创建应用

进入后台后,单击左边的“应用”图标,会出现已经创建的应用项目列表和“创建应用”按钮。单击“创建应用”按钮,出现如图所示的对话框,填写完成应用的相关信息后,即可创建一个等待开发的应用。

8.1.3.配置小程序密钥

无需获取也可以使用该软件(因为开启密钥需要100,我们可以应用软件提供的密钥)

8.1.4获取小程序服务器域名和“应用密钥”

单击进入后台,选择应用项目,单击“设置”→“应用密钥”选项,可以直接获取应用项目的Application ID和SecretKey(在小程序开发中需要使用)

8.1.5  下载及安装Bmob SDK

   登录https://github.com/bmob/bmob-WeApp-sdk下载Bmod SDK

bmob-WeApp-sdk下载Bmod SDK,解压下载后的SDK,把bmob. js和underscore. js文件放到相应的位置。例如,要放到小程序的utils目录中,则在其他需要使用的页面添加以下代码:

// index.js
var Bmob=require('../utils/bmob.js');

在小程序项目中的app. js中加入下面两行代码进行全局初始化:

var Bmob=require('utils/bmob.js');
Bmob.initialize("2f13251b61b97d7535463d6ee4730e5b","af91011d26320138ed1f71e71f1b767d");

8.2 数据的增、删、改、查

为了便于在Bmob中实现数据的增加、删除、修改、查询,我们在新建的应用中新增“test”表,并在表中添加id(编号)、title(标题)、content(内容)、image(图像)字段。

8.2.1创建表及字段

在“ul”表中添加id、title、content、image列,Bmob提供Number、String、Boolean、Date、File、Geopoint、Array、Object、Pointer、Relation共10种字段类型.

创建表:

8.2.2添加一条记录

添加一条记录用来实现把从前端获取的数据添加到服务端数据表中,主要用Bmob提供的SDK对象实现。示例代码如下:

首先,要把安装好的SDK里面的两个包放入utils中

打开文件,把两个js放入utils中

index.wxml代码如下:

<button type="primary" bindtap='add'>添加记录</button>

index.js代码如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
add:function(){
var Test =Bmob.Object.extend("test");//创建类
var test=new Test();//创建对象
test.set("title","WXML");//添加title 字段内容
test.set("content","Weixin Markup Language 微信标记语言");//添加content字段内容/添加数据,第一个入口参数是nu11
test.save(null,{
success:function(result){
//添加成功,返回成功之后的 objectId(注意:返回的属性名字是 id,不是 objec-Id),你还可以在Bmob的web管理后台看到对应的数据
console.log("添加成功,objectId:"+result.id);
},
error:function(result,error){//添加失败
console.log('添加失败');
}
});
},
})

运行结果如图所示: 

 

8.2.3 获取一条记录

获取一条记录是指从数据表中查询一条记录,主要根据objectId值来直接获取单条数据对象。示例代码如下:

index.wxml如下:

<button type="primary" bindtap='query'>获取记录</button>

index.js如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
query:function(){
  var Test =Bmob.Object.extend("test");
  var query = new Bmob.Query(Test);
  query.get("1a67adc746",{
success:function(result){
    //The object was retrieved successfully.
  console.log("该记录标题为"+result.get("title"));
  console.log("该记录的内容为"+result.get("content"));
  },
  error:function(result,error){
  console.log("查询失败");
}
});
}
})

运行结果如图所示:

8.2.4 修改一条记录

如果要修改一条记录,则首先需要获取更新后的Bmob. Object对象,将值修改后保存数据就可以了。

index.wxml如下:

<button type="primary" bindtap='modi'>修改记录</button>

 index.js如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
modi:function(){
  var Test = Bmob.Object.extend("test"); 
  var query =new Bmob.Query(Test);
  //这个id是要修改条目的id,当该id生成并存储成功时可以获取到 
  query.get("1a67adc746",{
  success:function(result){
  //回调中可以取得这个diary对象的一个实例,然后就可以修改它了
  result.set('title',"WxSS");
  result.set('content',"WenXin Style Sheets"); 
  result.save();
  //The object was retrieved successfully.
  console.log("修改成功")
  console.log("该记录标题修改为"+result.get("title"))
  console.log("该记录内容修改为"+result.get("content"))
},
  error:function(object,error){ 
    console.log("修改失败")
  }
  });
}
}
)

运行结果如图所示:

8.2.5 删除一条记录

删除一条记录可以使用Bmob.Object的destroy方法。

index.wxml如下:

<button type="primary" bindtap='del'>删除记录</button>

index.js如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
del:function( ){
  var Test = Bmob.Object.extend("test"); 
  var query = new Bmob.Query(Test);
  query.get("1a67adc746",{
  success:function(object){
  //The object was retrieved successfully.
   object.destroy({
  success:function(deleteObject){
     console.log("删除记录成功");
    },
  error:function(error){
     console.log("删除记录失败");
  }
});
},
  error:function(object,error){
  console.log("修改失败")
  },
});
},
})

运行结果如图所示:

8.2.6 查询所有数据

为了获取某个数据表中的所有数据,我们可以通过Bmob提供的Query对象来实现,示例代码如下:

index.wxml代码如下:

<button type="primary" bindtap='queryall'>获取所有数据记录</button>

index.js代码如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
queryall:function(){
  var Test = Bmob.Object.extend("test");
  //test数据表
   var query = new Bmob.Query(Test);//查询所有数据 
  query.find({
  success:function(results){
  console.log("共查询到"+results.length+"条记录");//循环处理查询到的数据
  for(var i=0; i<results.length;i ++){
     var object =results[i];
  console.log(object.id +'-' + object.get('title') +'-'+object.get('content'));
  }
  },
  error:function(error){
  console.log("查询失败:"+error.code +""+error.message);
}
  }, 
  )}
})

运行结果如图所示:

8.2.7 条件查询

Bmob中提供的查询方法主要有:等于(equalTo)、不等于(notEqualTo)、小于(lessThan)、小于等于(lessThanOrEqualTo)、大于(greaterThan)、大于等于(greaterThanOrEqualTo)等。
示例代码如下:

index.wxml代码如下:

<button type="primary" bindtap='wherequery'>条件查询</button>

index.js代码如下:

var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
//条件查询
wherequery:function(){
  var Test = Bmob.Object.extend("test"); var query =new Bmob.Query(Test);
  query.equalTo("title","WXML"); //查询 title等于“WXML”的记录//查询所有数据 
  query.find({
  success:function(results){
  console.log("共查询到"+results.length+"条记录");//循环处理查询到的数据
  for(var i=0; i < results.length;i ++){
    var object =results[i];
  console.log(object.id +'- '+ object.get('title'));
  }
},
  error:function(error){
  console.log("查询失败:"+error.code +"" + error.message);
  }
});
}
})

运行结果如图所示:

8.2.8 分页查询 

照指定条数为一页来显示,这时可以使用limit方法限制查询结果的数据条数来进行分页。默认情况下,limit的值为10,最大有效设置值为1000。

query.limit(10);

同时,skip方法可以做到跳过查询的前多少条数据来实现分页查询的功能。skip的默认值为10。

query.skip(10);

8.3 上传图片

8.3.1 上传一张图片并显示

Bmob提供了文件后端保存功能。利用这一功能,我们可以把本地文件上传到Bmob后台,并按上传日期为文件命名。

示例代码如下:

index.wxml代码如下:

<button type="primary" bindtap='upimage'>上传一张图片</button>
<image src ="{{url}}"> </image>

 index.js代码如下:

var Bmob =require('../../utils/bmob.js');
Page({
  data:{
    url:""
  },
  //上传一张图片
  upimage:function(){ 
    var that =this;
    wx.chooseImage({
      count:1,//默认值为9
      sizeType: ['compressed'],//可以指定是原图还是压缩图,默认二者都有 
      sourceType: ['album','camera'],//可以指定来源是相册还是相机,默认二者都有
      success:function(res){
        var tempFilePaths = res.tempFilePaths;
        if(tempFilePaths.length >0){
          var newDate = new Date();
          var newDateStr =newDate.toLocaleDateString();//获取当前日期为文件主名   
          var tempFilePath =[tempFilePaths[0]];
          var extension = /\.([^.]*)$/.exec( tempFilePath[0]);//获取文件扩展名
          if(extension){
            extension =extension[1].toLowerCase();
          }
          var name = newDateStr + "." + extension;//上传的图片的别名
          console.log("嘟嘟嘟"+name);
          console.log("嘟嘟嘟"+tempFilePaths);
          var file = new Bmob.File(name,tempFilePaths);
          file.save().then(
            function(res){
              console.log("嘟嘟嘟"+res.name());
              console.log("嘟嘟嘟"+res.url());
              var url=res.url();
              that.setData({ 
                url:url
              })
            },
            function(error){
              console.log(error);
            }
          )
        }
      }
    })
  },
})
 

运行结果如图所示:

8.3.2 上传多张图片并显示

Bmob支持一次上传多张图片,并将图片保存到素材库中。示例代码如下: 

index.wxml代码如下:

<button type="primary" bindtap="uppic">上传多张照片</button>
<block wx:for="{{list}}" wx:key="this">
  <image src="{{url}}"></image>
</block>

index.js代码如下:

const { File } = require('../../utils/bmob.js');
var Bmob =require('../../utils/bmob.js');
Page({
data:{
},
//上传多张照片
uppic:function(){
  var that = this;
  wx.chooseImage({
  count:9,//默认值为9
  sizeType:['compressed'],//可以指定为压缩图或原图,默认两者都有
  sourceType:['album','camera'],//相册还是相机,默认两者都有
  success:function(res){
    wx.showNavigationBarLoading()
    that.setData({
      loading:false
    })
    var urlArr=new Array();
 
 
    var tempFilePaths = res.tempFilePaths;
    console.log(tempFilePaths)
    var imgLength=tempFilePaths.length;
    if(imgLength>0){
      var newDate=new Date();
      var newDateStr=newDate.toLocaleDateString();//获取当前日期文件
 
      var j=0;
      for(var i=0;i<imgLength;i++){
        var tempFilePath=[tempFilePaths[i]];
        var extension =/\.([^.]*)$/.exec(tempFilePath[0]);//获取文件扩展名
      
      if(extension){
        extension=extension[1].toLowerCase();
 
      }
      var name=newDateStr+"."+extension;//上传图片别名
      var file=new Bmob.File(name,tempFilePath);
      file.save().then(function(res){
        wx.hideNavigationBarLoading()
        var url=res.url();
        console.log("第"+i+"张Url"+url);
        that.setData({
          url:url
        })
        urlArr.push({"url":url});
        that.setData({
          list:urlArr
        })
        console.log(list)
        j++;
        console.log(j.imgLength);
        if(imgLength==j){
        console.log(imgLength,urlArr);
        //如果担心就可以去掉这几行注释
        showPic(urlArr,that)//显示图片
      }
      },function(error){
        console.log(error);
      })
    }
  }
}
});
}
})

运行结果如图所示:

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM项目小程序“在线疫苗预约小程序pf.zip”是一个基于Spring、Spring MVC和MyBatis(SSM)框架开发的微信小程序,旨在简化疫苗接种的预约流程。该项目利用微信小程序的用户便利性和SSM框架的技术实力,提供一个高效、便捷的疫苗预约服务平台。 以下是该在线疫苗预约小程序的核心功能和特点: 1. **在线预约**:用户可以通过小程序直接预约疫苗接种,选择合适的时间和接种点,无需排队等候。 2. **接种信息管理**:用户可以查看自己的接种记录,包括接种的疫苗类型、剂次、接种日期等信息。 3. **智能提醒**:系统会根据用户的接种记录和疫苗类型,智能推送第二剂或后续剂次的接种提醒。 4. **实时库存查询**:用户可以实时查询各接种点的疫苗库存情况,合理规划接种时间。 5. **健康评估**:在预约前,用户提供健康状况自评,以便医疗人员提前了解并做好准备。 6. **接种指南**:提供详细的疫苗知识介绍和接种后注意事项,帮助用户了解疫苗相关信息。 7. **数据统计分析**:后台系统为医疗机构提供接种数据的统计分析,有助于疫苗管理和分配。 8. **互动咨询**:用户可以通过小程序与医疗专业人员进行在线咨询,解答疫苗接种相关问题。 整个系统以微信小程序为前端,便于用户随时随地访问和使用;后端采用SSM框架,确保了数据处理的效率和稳定性。它不仅提供了一个方便的疫苗预约工具,还通过综合化的服务和智能化的管理,提升了疫苗接种的便捷性和效率,是现代公共卫生服务的重要组成部分。
目录: 第1章 微信生态 1.1 微信:是一个生活方式 1 1.2 微信公众平台 6 1.2.1 公众平台简介 6 1.2.2 服务号和订阅号 7 1.3 企业号 8 1.4 小程序 8 1.5 微信开放平台 9 1.6 微信支付 10 1.7 表情开放平台 12 1.8 微信广告 12 1.9 小结 13 第2章 开发环境及技术介绍 2.1 集成软件包介绍 14 2.2 XAMPP的安装与配置 15 2.3 PhpStorm的安装及配置 20 2.4 相关技术介绍 23 2.4.1 HTTP 23 2.4.2 HTML5 25 2.5 小结 26 第3章 开发前的准备 3.1 开发概述 27 3.1.1 OpenID 27 3.1.2 公众号使用场景 28 3.2 公众号消息会话流程 30 3.3 接入指南 31 3.4 接口权限及调用频率 33 3.5 微信网页开发样式库 35 3.6 小结 37 第4章 常用调试方法及工具 4.1 微信测试号 38 4.2 接口在线调试 41 4.3 微信Web开发者工具 42 4.3.1 微信网页授权调试 43 4.3.2 JS-SDK权限校验 45 4.3.3 网页远程调试 45 4.4 前端调试工具 46 4.4.1 谷歌浏览器开发者工具 48 4.5 移动端抓包与调试 50 4.5.1 Charles抓包工具 55 4.6 小结 56 第5章 基于CodeIgniter的微信公众平台开发框架 5.1 CodeIgniter简介 57 5.2 工程代码改造 59 5.3 微信公众号开发配置 60 5.4 小结 63 第6章 微信网页开发 6.1 微信网页授权原理 64 6.1.1 网页授权注意事项 65 6.1.2 网页授权流程 66 6.2 微信网页授权实例 67 6.3 微信网页多域名授权 74 6.3.1 原理分析 74 6.3.2 代码实现 76 6.4 微信JS-SDK 78 6.4.1 接入准备 79 6.4.2 JS-SDK接口实例 80 6.5 小结 85 第7章 微信支付 7.1 微信支付接入方式 86 7.2 微信支付准备工作 88 7.3 微信支付实践 89 7.3.1 示例代码解析 90 7.3.2 支付示例 91 7.3.3 支付结果通知 96 7.4 聚合支付 99 7.4.1 聚合支付接入示例 101 7.5 小结 105 第8章 微信登录 8.1 微信开放平台 107 8.1.1 UnionID机制 108 8.2 微信自动登录 109 8.2.1 数据结构设计 110 8.2.2 代码实现 112 8.2.3 使用UnionID登录 117 8.2.4 如何应用到现有站点 118 8.3 小结 120 第9章 微信小程序 9.1 小程序简介 121 9.2 开发环境及框架 122 9.2.1 开发配置 125 9.2.2 HTTPS配置 126 9.3.1 iOS/Android开发者 129 9.3 如何着手开发小程序 129 9.4 页面生命周期 130 9.3.2 前端开发者 130 9.3.3 后端开发者 130 9.5 小程序组件和API 134 9.6 小程序登录 134 9.7 小程序微信支付 140 9.8 小结 145 第10章 案例:第一个echo server程序 10.1 接入开发者模式 146 10.2 消息响应 147 10.2.1 公众号会话保存Session 153 10.3 自定义菜单 154 10.4 小结 157 第11章 案例:微信随手记 11.1 需求描述 159 11.2 数据库设计 159 11.3 代码实现 161 11.3.1 添加主题 161 11.3.3 主题查看 163 11.3.4 图片下载 166 11.3.5 图片预览 169 11.3.6 聊天机器人 170 11.3.7 入口函数 174 11.4 运行效果 175 11.5 小结 177
SSM项目小程序“基于uniapp智能小程序商城.zip”是一个使用Spring、Spring MVC和MyBatis(SSM)框架,结合uniapp开发的跨平台智能商城系统。该系统旨在为用户提供一个无缝购物体验,无论是在微信小程序、百度智能小程序、支付宝小程序,还是其他支持uniapp框架的平台。 以下是该智能小程序商城的核心功能和特点: 1. **跨平台兼容性**:利用uniapp的开发优势,实现一次开发,多端运行,覆盖广泛的用户群体。 2. **商品展示**:提供清晰的商品分类和详细的商品信息页,支持图片和视频等多媒体展示方式。 3. **购物车与结算**:用户可以将商品添加至购物车,并在购物车中修改商品数量或删除商品,实现便捷的结算流程。 4. **订单管理**:支持订单创建、查看和管理功能,用户可以轻松跟踪订单状态,包括付款、发货、退货等。 5. **支付集成**:整合多种支付方式,包括但不限于微信支付、支付宝支付等,为用户提供安全方便的在线支付体验。 6. **用户认证**:通过手机号或第三方账号快速登录,简化注册流程,提高用户体验。 7. **客户服务**:内置客服模块,使用户能够及时联系商家解决购物过程中的问题。 8. **个性化推荐**:根据用户的浏览和购买历史,采用智能算法为用户推荐可能感兴趣的商品。 9. **后台管理系统**:为商家提供全面的后台管理系统,包括商品管理、订单处理、数据分析等功能。 整个系统以uniapp作为前端开发框架,实现了一套代码在不同平台运行的高效性;后端则采用SSM框架,确保了数据处理的效率和稳定性。它不仅提供了一个便捷、高效的购物平台,还通过智能化的功能提升了用户购物体验,是现代电子商务解决方案的优秀代表。
电商小程序后端开发的功能点包括但不限于以下几个方面: 1. 用户管理: 实现用户的注册、登录、个人信息管理等功能,包括用户身份验证和权限控制。 2. 商品管理: 实现商品的添加、编辑、删除、查询等功能,包括商品分类、属性、库存管理等。 3. 订单管理: 实现订单的创建、支付、取消、发货、退款等功能,包括订单状态的管理和订单与商品的关联。 4. 购物车管理: 实现购物车中商品的添加、删除、数量修改等功能,包括购物车与用户和商品的关联。 5. 支付管理: 实现与第三方支付平台的对接,处理用户支付请求,生成支付订单等。 6. 物流管理: 实现订单的物流跟踪功能,包括订单发货、物流信息查询等。 7. 评价管理: 实现用户对商品的评价功能,包括评价的提交、查看、回复等。 8. 促销管理: 实现促销活动的创建、管理、展示等功能,包括满减、折扣、优惠券等。 9. 数据统计与分析: 实现对用户、商品、订单等数据的统计和分析,提供数据报表和可视化展示。 10. 客服与反馈: 实现用户与客服的实时通讯功能,包括在线咨询、投诉建议等。 以上只是电商小程序后端开发中的一些常见功能点,具体的功能需求还会根据实际业务需求而有所差异。123 #### 引用[.reference_title] - *1* *3* [从零开始,开发一个电商微信小程序[前端+后端(c#)]](https://blog.csdn.net/weixin_42794881/article/details/109178368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [搭建JAVA电商平台——后端](https://blog.csdn.net/Akira_Rexlee/article/details/81144817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值