小程序第八章总结

1.比目后端云简介

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

            除了自己搭建服务端以外, 还可以利用一些网络公司提供的云服务来进行小程序后端的相应开发。 本章主要讲解利用比目网络科技有限公司提供的Bmob 后端云进行小程序后端开发。

           Bmob 后端云专注于为移动应用提供一整套后端云服务, 能帮助开发者免去几乎所有服务器端的编码工作, 大幅度降低开发成本和开发时间。

            Bmob 提供了小程序软件开发工具包(SoftWareDevelopmentKit,SDK), 让用户拥有强大的后端服务。 嵌入Bmob 小程序SDK后, 开发工程师可以更加专注于编写前端代码和优化良好的用户体验, 而不必担心后端的基础设施。

            Bmob 提供了成熟的WebSocket信道服务, 降低了开发者使用WebSocket通信的门槛。 同时也满足了小程序需要HTTPS与服务端通信的需求。

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

1.注册Bmob账号

             进入Bmob 官方网站(bmob) 后, 单击右上角的“注册” 按钮,

next:

在跳转页面填入姓名、邮箱, 并设置密码,

确认后到邮箱激活Bmob 账户, 即可拥有Bmob 账号。

 2.创建应用

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

 next:

3.配置小程序密钥  

              进入后台, 选择应用项目, 单击“设置” → “应用配置” 选项, 将小程序中的AppID(小程序ID) 和APPSecret (小程序密钥) 填写到Bmob 中。

4.获取微信小程序服务器域名和”应用密钥“

            进入后台,选择应用项目,单击”设置“→”应用配置“选项,在该界面中可以得到”微信小程序服务器域名配置“。

****可开启也可不开启,不开启也可以使用

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

 

5.下载及安装Bmob SDK

         登录GitHub - bmob/bmob-WeApp-sdk: 微信小程序SDK 下载Bmob SDK,

             解压下载后的SDK,

               把 Bmob.js underscore.js 文件放到相应的位置。

               例如,要放到小程序的 utils 目录中,则在其他需要使用的页面添加以下代码:

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

2.数据的增、删、改、查 

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

1.创建表及字段

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

2.添加一条记录

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

.wxml

<button type="primary" bind:tap='add'>添加记录</button>

.js

var Bmob=require('../../utils/Bmob.js');
const { result, object } = require('../../utils/underscore.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字段内容//添加数据,第一个入口参数是nulltest.save(null,{success:function(result){//添加成功,返回成功之后的objectId(注意:返回的属性名字是id,不是objectId),你还可以在Bmob的Web管理后台看到对应的数据console.log("添加成功,objectId:"+result.id);},error:function(result,error){//添加失败console.log('添加失败');}});},
})

 结果:

3.获取一条记录

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

.wxml

<button type="primary" bind:tap='query'>获取记录</button>

.js

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

 结果:

4.修改一条记录

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

.wxml

<button type="primary" bind:tap="modi">修改记录</button>

.js

modi:function(){var Test =Bmob.Object.extend("test");var query=new Bmob.Query(Test);//这个id是要修改条目的的id,当该id生成并存储成功时可以获取到query.get("4a1eafa17f",{success:function(result){//回调中可以取得这个diary对象的一个实例,然后就可以修改它了result.set('title',"WXSS");result.set('content',"WeiXin 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("修改失败")}});},

 结果:

5.删除一条记录

              删除一条记录可以使用Bmob.Objectdestroy 方法。 示例代码如下:

.wxml

<button type="primary" bind:tap="del">删除一行记录</button>

.js

 //删除objectId为4a1eafa17f的记录del:function(){var Test=Bmob.Object.extend("test");var query=new Bmob.Query(Test);query.get("4a1eafa17f",{success:function(object){//The Object was retrieved successfully.object.destroy({success:function(deleteObject){console.log("删除记录成功");},error:function(object,error){console.log("删除记录失败");}});},error:function(object,error){console.log("修改失败");}});},

结果:

6.查询所有数据

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

.wxml

<button type="primary" bind:tap="queryall">获取所有数据记录</button>

.js

//获取数据表中所有数据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);
}}, )}

结果:

7.条件查询

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

.wxml

<button type="primary" bind:tap="wherequery">条件查询</button>

.js

 //条件查询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.分页查询

              如果在数据比较多的情况下, 希望将查询出的符合要求的所有数据按照指定条数为一页来显示, 这时可以使用limit 方法限制查询结果的数据条数来进行分页。 默认情况下, limit 的值为10, 最大有效设置值为1 000。

query.limit(10);

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

query.skip(10);

3.上传图片

1.上传一张图片并显示

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

.wxml

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

.js

var Bmob=require('../../utils/Bmob.js');
const { result, object } = require('../../utils/underscore.js');
Page({data:{},upimage:function() {var that=this;wx.chooseImage({count:1,//默认值为9sizeType:['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;//上传的图片的别名var file=new Bmob.File(name,tempFilePaths);file.save().then(function (res) {console.log(res.url());var url=res.url();that.setData({url:url})}),function(error) {console.log(error);}}}})},
})

 结果:

上传图片后:

 2.上传多张图片并显示

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

.wxml

<button type="primary" bind:tap="uppic">上传多张图片</button>
<block wx:for="{{list}}" wx:key="this">
<image src="{{item.url}}" />
</block>

 .js

//上传多张照片uppic:function(){var that = this;wx.chooseImage({count:9,//默认值为9sizeType:['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);})}}}});}

 上传多张图片后:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3032482.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成结构—指令和指令格式

目录 一、指令的基本格式 二、指令字长 1. 定长指令字结构 2.变长指令字结构 三、地址码 1.四地址指令 2.三地址指令 3.二地址指令 4.一地址指令 5. 零地址指令 四、操作码 1. 定长操作码指令格式 2. 扩展操作码指令格式 五、指令的操作数类型和操作类型 1. 操作…

基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表

目录 一、引言 二、数据分组原理与意义 三、案例分析 四、代码实现与解释 五、对新手友好的解释 六、技术细节与扩展 七、实际应用场景 八、总结 一、引言 在数据处理和分析的广阔领域中&#xff0c;数据分组是一项基础且重要的任务。数据分组通常指的是将数据集中的元…

程序员的归宿。。

大家好&#xff0c;我是瑶琴呀。 相信每个进入职场的人都考虑过自己的职业生涯规划&#xff0c;在不同的年龄段可能面临不同挑战&#xff0c;这点对于 35 的人应该更为感同身受。 对于程序员来说&#xff0c;大部分人的职业道路主要是下面三种&#xff1a;第一条&#xff0c;…

数据序列包分析

基于数据序列包分析各部分的内容及含义&#xff0c;可能会考大题 基于本例分析&#xff0c;每部分含义如下&#xff1a; 时间&#xff08;Time&#xff09;&#xff1a; 时间戳显示了数据包在网络中被捕获的具体时间。在本例中&#xff0c;如"0.000000"表示第一个数据…

【PG数据库】PostgreSQL 日志归档详细操作流程

1.1 日志归档的目的 pg数据库日志归档是将PostgreSQL数据库的日志文件进行归档的过程。 归档的主要目的是为了保留历史数据&#xff0c;确保数据的一致性和完整性&#xff0c;同时为数据恢复提供必要的支持。 pg数据库日志归档的目的包括&#xff1a; 1.数据恢复&#xff1…

【IC前端虚拟项目】axi ddr/sram验证组件思路与编写

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 在完成了所有的utils包括apb_utils之后,就要进行验证环境的整体搭建,因此我们再把验证环境拿出来看一下: 按照由底至顶层的思路,接下主要有五大部分需要我们完成:ram_model、reference_model、env、…

Github 配置 SSH key

一、前言 问题描述 通过 ssh 的 url 使用 git 命令克隆 github 上私有项目出现 fatal: Could not read from remote repository. 本地仓库无法从远程仓库读取数据克隆失败 问题定位 一般是仓库 URL 错误或者权限问题这里排除 URL 错误&#xff0c;初步定位为访问权限问题 解决…

力扣HOT100 - 84. 柱状图中最大的矩形

解题思路&#xff1a; 单调栈 对于一个高度height[ i ]&#xff0c;找左右两边均严格小于它的值。 class Solution {public int largestRectangleArea(int[] heights) {int n heights.length;int[] left new int[n];int[] right new int[n];Deque<Integer> mono_st…

RS3236-3.3YUTDN4功能和参数介绍及PDF资料

RS3236-3.3YUTDN4功能和参数介绍及PDF资料-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 品牌: RUNIC(润石) 封装: XDFN-4-EP(1x1) 描述: 带过温保护 输出类型: 固定 最大输入电压: 7.5V 输出电压: 3.3V 最大输出电流: 500mA RS3236-3.3YUTDN4 是一款低压差线性稳压器&#x…

商务分析方法与工具(八):Python的趣味快捷-年少不知numpy好,再见才觉很简单

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

3分钟掌握Suno API!音痴也能创作热门曲!免费拥有个人爆款音乐!

Suno API 的申请及使用 随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的音乐。 Suno 是一个专业高质量的 AI 歌曲和音乐创…

[AutoSar]lauterbach_001_ORTI_CPUload_Trace

目录 关键词平台说明一、ORTI概述二、ORTI文件的生成三、ORTI文件的导入四、Trace 功能4.1 Trace 功能菜单介绍4.2 Trace功能的配置4.3 Trace MCDS 设置4.4 Task Switches断点的设置4.5 Trace 数据的录取4.6 CPU 负载和Task调度的查看 关键词 嵌入式、C语言、autosar、OS、BSW…

Qt——信号 和 槽

目录 概述 信号和槽的使用 自定义信号和槽 带参数的信号和槽 概述 在Linux系统中&#xff0c;我们也介绍了信号的产生、信号的检测以及信号的处理机制&#xff0c;它就是系统内部的通知机制&#xff0c;也可以是一种进程间通信的方式。在系统中有很多信号&#xff0c;我们可…

MySQL —— 约束

一、概念介绍 MySQL是数据管理的最后一层防线&#xff0c;因此在对数据进行各种操作的时候&#xff0c;我们尽可能的从技术的角度去对用户进行各种合理的约束&#xff0c;使得各种数据的操作尽可能的合理&#xff0c;这就是约束的概念&#xff0c;本篇将整理常见的基本约束&am…

SOCKET编程(4):SOCKET实战

SOCKET实战 Writen()、Readn()函数 send()函数存在需要发送的字符数len小于函数返回的已发送的字符数(ssize_t)的问题 recv()函数存在需要接收的字符数len小于函数返回的已接收的字符数(ssize_t)的问题 解决上述问题通过Writen()、Readn()函数实现 //buff是数据存储地址&a…

资源管理游戏模版进入The Sandbox

我们非常高兴地向您介绍 Game Maker 的最新模板&#xff1a;资源管理游戏&#xff01; 这一全新的模板让您能够深入身临其境的游戏体验中&#xff0c;同时掌握令人兴奋的新机制。通过揭开模板的神秘面纱&#xff0c;您可以锤炼您的游戏设计技能。 什么是资源管理游戏&#xff1…

手机电脑通用便签推荐 好用便签下载

便签软件作为一种日常记录和管理工具&#xff0c;其实用性和便捷性深受用户喜爱。一款优秀的便签软件不仅能帮助我们随时随地记录重要信息&#xff0c;还能有效提高工作效率。然而&#xff0c;市场上很多便签应用仅限于单一平台使用&#xff0c;对于需要在手机和电脑间频繁切换…

条件平差——以水准网平差为例 (python详细过程版)

目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、原理概述 条件平差的函数模型和随机模型为: A V + W = 0

已解决【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法

本文摘要&#xff1a;【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法。 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专…

服务器内存占用不足会怎么样,解决方案

在当今数据驱动的时代&#xff0c;服务器对于我们的工作和生活起着举足轻重的作用。而在众多影响服务器性能的关键因素当中&#xff0c;内存扮演着极其重要的角色。 服务器内存&#xff0c;也称RAM&#xff08;Random Access Memory&#xff09;&#xff0c;是服务器核心硬件部…