首先,今天我们会使用到腾讯为我们提供的云平台来协助我们小程序的开发和部署。
环境准备:
- 可以理解为微信官方给我们的一个
免费服务器
- 帮我们部署好了小程序的运行环境
- 将服务器的一些功能,比如:数据库的增删改查都封装成了接口
- 我们
不需要使用自己的服务器和域名
就能让别人访问到我们的小程序
相关文档:云开发官网文档
AppID选择自己开始创建的测试账号的AppID,然后选择不使用云服务
输入环境名称,点击免费体验一个月
当cloud目录出现
当前环境xxxx
时,表明我们设置成功
云开发环境ID:直接在云开发控制台,设置中获取环境ID
注意:后面我直接放弃ts语法,将使用js语法来开发,同时修改了一下项目文件路径。大家根据自己的项目结构配置即可。
登录功能主要操作的是
我的页面
,所以我们可以更换app.json中pages的顺序,将pages/me/me
放在最前面,这样每次页面刷新的时候,都会定位到我的页面
删除不必要的文件,保留如下内容即可
index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
openid: wxContext.OPENID
}
}
Page({
data:{
userinfo:{},
openid:""
},
onGotUserInfo:function(e){
const that = this
//调用我们编写的login云函数
wx.cloud.callFunction({
name:"login",
success:res=>{
console.log("云函数调用成功")
that.setData({
openid:res.result.openid,
userinfo: e.detail.userInfo
})
that.data.userinfo.openid = that.data.openid
console.log("userinfo", that.data.userinfo)
//将用户信息保存到缓存中,这样保证每次页面刷新之后不用重新登录
wx.setStorageSync("userinfo", that.data.userinfo)
},
fail:res=>{
console.log("云函数调用失败")
}
})
},
//onLoad:页面重新加载就会执行【小程序生命周期函数】
onLoad:function(options){
//从缓存的userinfo中读取缓存信息
const ui = wx.getStorageSync('userinfo')
this.setData({
userinfo:ui,
openid:ui.openid
})
}
})
<view wx:if="{{!openid}}">
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">登录button>
view>
<view class="uploader-container" wx:if="{{openid}}">
<image class="image" src="{{userinfo.avatarUrl}}">image>
<view class="name">{{userinfo.nickName}}view>
view>
点击按钮生成记录数据(云数据库的插入)
实现+1、-1按钮
index.wxss:
.button{
width: 70px;
height: 70px;
line-height:70px;
border-radius: 20%;
border: none;
text-align:center;
font-size: 25px;
color:#FFFFFF;
font-weight:bold;
margin-top:50px;
}
.right{
background:#EA5149;
float: right;
}
.left{
background:#feb600;
}
<view class="container">
<view class="right button" bindtap="addLog" data-add="1">+1view>
<view class="left button" bindtap="addLog" data-add="-1">-1view>
view>
点击微信开发者工具左上角的
云开发
,进入云开发控制台,然后点击数据库
在cloud文件夹下新建createlog文件夹
- 修改createlog文件夹下的index.js:
index.js:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
//获取云函数的数据库
const db = cloud.database()
// 云函数入口函数【async+await:异步等待】
exports.main = async (event, context) => {
try{
//向logs数据库中添加数据
return await db.collection('logs').add({
data:{
add: event.add,
//记录时间
date:event.date,
//记录是谁点击的【openid标识唯一用户】
openid:event.openid
}
})
}catch(e){
console.log(e)
}
}
最后别忘记重新部署云函数
cloud文件夹下的文件夹名就是云函数的名称,然后在.js文件中的
wx.cloud.callFunction
中的name参数指定我们要调用哪个云函数
在index.js文件中调用云函数:
然后,点击微信小程序右上角的云开发
,进入云环境控制台,点击数据库,查看我们插入的数据:
接下来我们编写云函数从云数据库中读取我们插入的信息
- 新建getlogs文件夹(云函数名称就为:getlogs)
cloud/getlogs/index.js:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
try{
//根据传过来的context上下文拿到openid,取出对应数据
return await db.collection('logs').where({
openid: event.openid
}).get()
}catch(e){
console.log(e)
}
}
然后右击getLogs,将云函数部署到云端
logs.js:
//logs.js
const util = require('../../utils/util.js')
Page({
data: {
logs: []
},
getlogs:function(){
const that = this
//从缓存中获取用户信息
const ui = wx.getStorageSync("userinfo")
//如果缓存中没有,表明用户未登录,直接跳转到登录页面
if(!ui.openid){
wx.switchTab({
url: '/pages/me/me',
})
}else{
//调用我们开始创建的getlog云函数
wx.cloud.callFunction({
name: "getlogs",
data: {
openid:ui.openid
},
success:res=>{
console.log("res",res)
that.setData({
logs:res.result.data.map(log=>{
var date = util.formatTime(new Date(log.date))
log.date = date
return log
})
})
},
fail: res => {
console.log("res", res)
}
})
}
},
//onLoad 页面首次加载的时候执行
//onShow 页面每次切换的时候执行
onShow:function(){
this.getlogs()
}
})
在logs.wxml页面中取出对应的值并展示:
<block wx:for="{{logs}}" wx:key="key">
<view class="log-item">
日期:{{item.date}} 分数:{{item.add}}
view>
block>
点击真机调试-选择手机系统-扫描二维码
注意:
- 如果小程序在开发者工具中能正常运行,但是在真机调试中无法正常运行的话,那么可能是
- 没有将云函数全部上传上去
- 云数据库可能有错误数据
发布成功之后别人就能直接访问到我们的小程序了