30分钟开发微信小程序并部署

news2024/11/6 3:09:43

30分钟开发微信小程序并部署

首先,今天我们会使用到腾讯为我们提供的云平台来协助我们小程序的开发和部署。

环境准备:

  • 微信开发者账号(自己在微信公众号平台注册一个账号):https://mp.weixin.qq.com/,同时注册一个自己的测试账号,然后记住自己的appID
  • 下载微信开发者工具

前置:什么是云开发?

  1. 可以理解为微信官方给我们的一个免费服务器
  2. 帮我们部署好了小程序的运行环境
  3. 将服务器的一些功能,比如:数据库的增删改查都封装成了接口
  4. 我们不需要使用自己的服务器和域名就能让别人访问到我们的小程序

相关文档:云开发官网文档

1 新建项目

①微信开发者工具新建项目

在这里插入图片描述

AppID选择自己开始创建的测试账号的AppID,然后选择不使用云服务

②点击云开发,免费搭建云环境

在这里插入图片描述

输入环境名称,点击免费体验一个月

在这里插入图片描述
在这里插入图片描述

③新建cloud目录,并指定cloudfunctionRoot

在这里插入图片描述

当cloud目录出现当前环境xxxx时,表明我们设置成功

④设置自己的云开发env

在这里插入图片描述

云开发环境ID:直接在云开发控制台,设置中获取环境ID

在这里插入图片描述

2 配置页面路径和按钮

① 新建image和ziyime文件夹,用于存放自己的页面和图片

在这里插入图片描述

②修改默认主题并添加按钮

  • 点击app.json文件,修改默认主题和小程序名称
    在这里插入图片描述
  • 修改app.json,添加tabBar
    注意:后面我直接放弃ts语法,将使用js语法来开发,同时修改了一下项目文件路径。大家根据自己的项目结构配置即可。
    在这里插入图片描述

3 编写云函数并操纵数据库

3.1 实现登录功能

登录功能主要操作的是我的页面,所以我们可以更换app.json中pages的顺序,将pages/me/me放在最前面,这样每次页面刷新的时候,都会定位到我的页面

在这里插入图片描述

①在cloud文件夹下新建login文件夹,用于实现登录的云函数

删除不必要的文件,保留如下内容即可

index.js

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    openid: wxContext.OPENID
  }
}

在这里插入图片描述

注意:编写完云函数之后一定要右键文件夹,选择上传并部署【每次修改cloud文件夹下的代码都需要重新右键部署一次】
在这里插入图片描述

②编辑页面me.wxml和me.js

  • me.js
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
    })
  }
})
  • me.wxml:
<view wx:if="{{!openid}}">
<!-- 根据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>

3.2 将点击记录存储到数据库【插入操作】

点击按钮生成记录数据(云数据库的插入)

  • 为了方便调试,此时我们将app.json的pages中的"pages/index/index"放在最前面
    在这里插入图片描述

①添加按钮并修改样式

实现+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;
}
  • index.wxml:
<!--index.wxml-->
<view class="container">
  <!-- addLog:点击事件 
  data-add="1":传入的数值-->
  <view class="right button" bindtap="addLog" data-add="1">+1</view>
  <view class="left button" bindtap="addLog" data-add="-1">-1</view>
</view>

②创建云数据库

点击微信开发者工具左上角的云开发,进入云开发控制台,然后点击数据库

  • 点击+号,选择创建集合,新建logs集合
    在这里插入图片描述
  • 然后更换数据库的权限为所有用户可读,仅创建者可写
    在这里插入图片描述

③创建createlog云函数

在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)
  }
}

在这里插入图片描述

最后别忘记重新部署云函数

④调用createlog云函数

cloud文件夹下的文件夹名就是云函数的名称,然后在.js文件中的wx.cloud.callFunction中的name参数指定我们要调用哪个云函数

在index.js文件中调用云函数:
在这里插入图片描述
然后,点击微信小程序右上角的云开发,进入云环境控制台,点击数据库,查看我们插入的数据:
在这里插入图片描述

3.3 将记录数据展示到页面上【读取】

接下来我们编写云函数从云数据库中读取我们插入的信息

  • 新建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页面中取出对应的值并展示:

<!--logs.wxml-->
<block wx:for="{{logs}}" wx:key="key">
  <view class="log-item">
    日期:{{item.date}} 分数:{{item.add}}
  </view>
</block>

4 真机调试并发布

①真机调试

点击真机调试-选择手机系统-扫描二维码

在这里插入图片描述

注意:

  • 如果小程序在开发者工具中能正常运行,但是在真机调试中无法正常运行的话,那么可能是
    • 没有将云函数全部上传上去
    • 云数据库可能有错误数据

②发布

  • 点击上传按钮,填入版本号和项目备注,点击上传

在这里插入图片描述

  • 上传成功之后就可以在我们的小程序管理页面看到我们上传的版本
    在这里插入图片描述
  • 点击提交审核的下拉选框,选为体验版,自己可以在上线前做最后一次测试

在这里插入图片描述

  • 测试成功之后就可以点击提交审核,然后就是等待发布结果了

发布成功之后别人就能直接访问到我们的小程序了

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

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

相关文章

arp欺骗(http)与dns欺骗

Arp欺骗 win7&#xff1a; ip:192.168.127.147 mac:00-0C-29-4F-1C-36 kali: ip:192.168.127.133 mac:00:0c:29:4c:4d:92 arp -a 获取网关 网关&#xff1a;ip&#xff1a;192.168.127.0 mac&#xff1a;00-0c-29-4c-4d-92 fping -g 192.168.127.0/24 192.168.127.1…

在华为眼里,ICT行业今年还有啥搞头?

大家好&#xff0c;我是老杨。 不知道你们有没有研究年报的习惯&#xff0c;一些超大厂是会每年发布年报的&#xff0c;而从年报里&#xff0c;你能看出很多行业趋势出来。 以最热门的华为举例&#xff1a; 每年&#xff0c;华为都会发布全年财报&#xff0c;对自己今年的整…

什么是低代码?国内常见的低代码平台有哪些?

一、什么是低代码开发&#xff1f; 低代码也称之为无代码或是 aPaas。要想了解低代码是什么&#xff0c;我们先来讨论低代码本质&#xff1f; 它是一种可视化软件开发方法&#xff0c;通过最少的编码更快地交付应用程序。 图形用户界面和拖放功能使开发过程的各个方面自动化…

【大数据之Hive】三、Linux下安装MySQL8.0.33

1 安装MySQL &#xff08;1&#xff09;解压MySQL安装包: tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql&#xff08;2&#xff09;卸载系统自带的mariadb&#xff1a; sudo rpm -qa | grep mariadb | xargs sudorpm -e --nodeps&#xff08;3&am…

快速上手 SpringBoot 单元测试

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 什么是单元测试&#xff1f;单元测试有哪些好处SpringBoot 单元测试使用单元测试的实现步骤生成单元测试类添加单元测试代码 …

rsync+inotfy实时同步

rsyncinotfy实时同步 目录 一、服务器端 二、客户端 一、服务器端 1、安装网站服务&#xff0c;启动&#xff0c;但是不写首页文件 yum -y install httpd 2、安装raync服务 yum -y install rsync 3、修改主配置文件 &#xff08;/etc/rsyncd.conf&#xff09; uid root gi…

transformer的dataset下载失败load_dataset(“glue“,“mrpc“)

下载的时候会报错https://huggingface.co/datasets/glue/resolve/main/glue.py这个路径无法下载&#xff0c;但是浏览器是可以打开的 所以&#xff0c;先去官网手动下载文件 然后让模型去读取&#xff0c;默认是会读取TRANSFORMERS_CACHE中的内容&#xff0c;不过在c盘&#x…

Ex-ChatGPT本地部署+Azure OpenAI接口配置+服务器部署

Ex-ChatGPT项目分为 Ex-ChatGPT 和 WebChatGPTEnhance 两部分&#xff0c;Ex-ChatGPT启动后是个web服务&#xff0c;通过访问ip端口体验&#xff1b; WebChatGPTEnhance可编译生成一个浏览器插件&#xff0c;Chrome或者Microsoft edge浏览器可以安装该插件&#xff0c;点击该插…

【Python入门篇】——Python中循环语句(循环中断break和continue)

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

MyBatis-Plus 可视化代码生成器来啦,让你的开发效率大大提速!!

前言 在基于Mybatis的开发模式中&#xff0c;很多开发者还会选择Mybatis-Plus来辅助功能开发&#xff0c;以此提高开发的效率。虽然Mybatis也有代码生成的工具&#xff0c;但Mybatis-Plus由于在Mybatis基础上做了一些调整&#xff0c;因此&#xff0c;常规的生成工具生成的代码…

【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ Rundll32的使用使用方法 - cmd使用方法 - 运行窗口/任务管理器/资源管理器 2️⃣ 常见应用场景运行js或vbs的脚本代码执行命令绕过杀毒软件的作法&#xff1f;修改注册表增加一个服务修复Internet Explorer其它常见命令 3️⃣ 原理…

使用LoRA对大语言模型LLaMA做Fine-tune

使用LoRA对大语言模型LLaMA做Fine-tune 前言下载配置环境模型的训练 Fine-tune模型的使用 Inference参考 前言 目前有大量对LLM&#xff08;大语言模型&#xff09;做Fine-tune的方式&#xff0c;不过需要消耗的资源非常高&#xff0c;例如 Stanford Alpaca: 对LLaMA-7B做Fine-…

springboot + vue3实现视频播放Demo(video.js Vue3-video-play)

文章目录 学习链接前言ffmpeg安装ffmpeg配置环境变量分割视频文件 后台配置WebConfig 前端代码video.js示例安装依赖视频播放组件效果 Vue3-video-play示例安装依赖main.js中使用视频播放组件效果 学习链接 ffmpeg官网 长时长视频java存储及vue播放解决方法 【 攻城略地 】vue…

物联网GPRS模块流量计算

物联网GPRS模块流量计算 MQTT(消息队列遥测传输) 是ISO 标准下一个基于TCP/IP的消息发布/订阅传输协议。 一、TCP消耗流量计算 以太网数据包结构&#xff1a; 以太网首部 IP首部 TCP首部 APPL首部 用户数据 以太网尾部 以太网首部为14个字节 IP首部为20个字节 TCP首部…

阿里云对象oss

1\RAM 首页 https://ram.console.aliyun.com/overview 点击用户进去 点击里面的一个用户&#xff0c;然后新建 id 和secret 上面灰色按钮&#xff0c;因为我已经绑定了两个。 "yourAccessKeyId", "yourAccessKeySecret" 这两个参数就对应上了 // 阿里云账…

【详解Collection接口、迭代器和Colletions工具类】

&#x1f320;作者&#xff1a;TheMythWS. &#x1f386;专栏&#xff1a;《集合与数据结构》 &#x1f387;座右铭&#xff1a;不走心的努力都是在敷衍自己&#xff0c;让自己所做的选择&#xff0c;熠熠发光。 目录 &#x1f440;Collection接口的常用方法 &#x1f4a8;…

java循环结构

文章目录 一、Java 循环结构 - for, while 及 do...while1、while 循环2、do…while 循环3、for循环4、break 关键字5、continue 关键字 总结 一、Java 循环结构 - for, while 及 do…while 顺序结构的程序语句只能被执行一次。 如果您想要同样的操作执行多次&#xff0c;就需…

企业bpm业务流程管理系统网站如何在外网访问?

企业在已有ERP系统的基础上去实施BPM业务流程管理系统&#xff0c;是非常有必要的。什么是BPM业务流程管理系统呢&#xff1f; BPM是英文BPM-Business Process Management的缩写&#xff0c;指的是通过对企业内部及外部业务流程的整个生命周期进行建模、自动化、管理监控和优化…

2023年6月18日DAMA-CDGA/CDGP认证北京/上海/深圳报名

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

[NOIP2004 普及组] FBI 树 递归解法

[NOIP2004 普及组] FBI 树 题目描述: 我们可以把由 0 和 1 组成的字符串分为三类&#xff1a;全 0 串称为 B 串&#xff0c;全 1 串称为 I 串&#xff0c;既含 0 又含 1 的串则称为 F 串。 FBI 树是一种二叉树&#xff0c;它的结点类型也包括 F 结点&#xff0c;B 结点和 I …