微信小程序开发

原文: https://www.cnblogs.com/MrFlySand/p/19122125
微信小程序开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/

01 版本控制

image
这些按钮都和 Git 版本控制 相关,作用如下:

  1. 推送:将本地仓库已提交的代码变更,上传到远程仓库(如 GitHub、GitLab 等),让团队成员同步你的修改。
  2. 抓取:从远程仓库获取最新的代码变更信息,但不会自动合并到本地当前分支(仅拉取“变更记录”,不影响本地代码)。
  3. 拉取:从远程仓库获取最新代码,并自动合并到本地当前分支(相当于「抓取 + 合并」的组合操作),用于同步远程最新代码到本地。
  4. 贮藏:临时保存工作区(未提交的)修改,方便切换分支、处理其他任务(之后可通过“应用贮藏”恢复这些修改)。
  5. 应用贮藏:将之前用“贮藏”保存的修改,恢复到工作区。
  6. 分支:管理分支的操作(如创建、切换、删除分支等)。分支可让你在不影响主代码的前提下,开发新功能或修复 Bug。
  7. 合并:将一个分支的代码变更,合并到当前所在分支(比如开发完新功能的 feature 分支,合并到 master 分支)。

官方教程:https://developers.weixin.qq.com/miniprogram/dev/devtools/wechatvcs.html

如下图,红色为以前的代码,绿色为当前代码
image

设置存储的仓库
image

ssh密钥认证

要在“微信开发者·代码管理”中添加 SSH 密钥,需分生成密钥复制公钥粘贴添加三步:

步骤 1:生成 SSH 密钥对(电脑终端操作)

代码上传到git失败?
image

  1. 打开 Git Bash(安装 Git 后自带的终端工具,Windows、Mac、Linux 都可用)。
  2. 输入命令生成密钥(把"你的邮箱@example.com"换成自己的邮箱,一路回车用默认设置):
    ssh-keygen -t rsa -C "你的邮箱@example.com"
    
    执行后,密钥会保存在系统默认路径(如 Windows 是 C:\Users\你的用户名\.ssh,Mac/Linux 是 ~/.ssh),生成两个文件:id_rsa(私钥,自己留着,别泄露)和 id_rsa.pub(公钥,需要复制的部分)。

image

步骤 2:复制公钥内容

  1. 找到 id_rsa.pub 文件(路径参考步骤 1),用记事本/文本编辑器打开。
  2. 全选并复制文件里的所有内容(从 ssh-rsa 开头到邮箱结尾的完整字符串)。

步骤 3:在平台粘贴并添加公钥

  1. 回到截图的“SSH 密钥”页面,在“在这里粘贴您的公钥”输入框中,粘贴刚复制的公钥内容
  2. 在“名称”输入框中,给密钥起个好记的名字(比如“个人电脑 SSH 密钥”)。
  3. 点击“添加 SSH 密钥”按钮,完成添加。

image
image

这样配置后,你的电脑就能通过 SSH 协议(更安全、免密码)与“微信开发者·代码管理”的仓库交互(拉取、推送代码)啦~

02 云开发

【数据同步出错了,让老板痛失 1 个亿!】 https://www.bilibili.com/video/BV1Xvnoz7EKJ/?share_source=copy_web&vd_source=e382d5e4e6b9fca0eddfd09f9d93b3b8

开通“云开发”

  1. 详情
    image
  2. 复制微信小程序的appID到微信小程序的appID
    image
  3. 代码:添加数据到数据库Users中

const dbUsers = wx.cloud.database().collection('Users') // 引用 Users 集合
//添加数据到数据库Users中
dbUsers.add({
	data: {
		_openId: userInfo.openId,
		nickName: userInfo.nickName,
		avatarUrl: userInfo.avatarUrl,
		createTime: new Date()
	}
})

云开发初始化

  1. env设置为自己云开发的id
    image

  2. 参考
    https://developers.weixin.qq.com/miniprogram/dev/wxcloudservice/wxcloud/guide/init.html
    https://www.bilibili.com/video/BV1Uz4y197Uz/?spm_id_from=333.337.search-card.all.click&vd_source=b8e4168387f0df9d4df9652223fb9f4b
    ③ 【小程序云开发之数据库操作】 https://www.bilibili.com/video/BV1Uz4y197Uz/?share_source=copy_web&vd_source=e382d5e4e6b9fca0eddfd09f9d93b3b8

wx.cloud.init({
  env: '修改为自己的云开发“环境ID”'
})

image

  1. 登录
    image

云函数部署

  1. 参考链接 https://blog.csdn.net/Pomprogram/article/details/116308475
  2. 右击文件夹cloudfunctions配置环境
    image
  3. 右击要部署的文件夹,上传所有文件
    image

获取用户的openid

参考链接://https://git.weixin.qq.com/wx_wx6bd6054ce20746d1/KuStudy/blob/9cd4157de2f2b06aeb966ad627f43a5cb05e7536/pages/login/login.js

  1. 文件路径:page\login\login.js,一定要使用wx.cloud.callFunction才能使用云函数。
getUserInfoByTap: function() {
    console.log('用户点击授权登录'); 
    // 使用wx.login获取用户的openid
    wx.login({
      success: (res) => {
        console.log('wx.login返回结果:', res);
        // 检查是否成功获取到code
        if (res.code) {
          // 调用云函数login获取用户openid  
          wx.cloud.callFunction({
            name: 'login',// 云函数名称
            data: {
              code: res.code // 传递登录凭证code到云函数
            },
            success: (loginRes) => {
              console.log('云函数login成功,返回结果:', loginRes);  
            },
            fail: (err) => {
              console.error('云函数调用失败:', err);
              this.handleLoginFail('登录失败,请重试'); 
            }
          })
        }
      }
    })
  },
  1. 文件cloudfunctions\login\index.js为云函数
// 云函数入口文件
const cloud = require('wx-server-sdk') // 引入微信云开发 SDK
cloud.init({
  env: '你的云开发ID',
}) // 初始化云开发环境

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext();
  return {
    openid: wxContext.OPENID, // 用户唯一标识(核心)
    appid: wxContext.APPID,   // 你的小程序 APPID
    unionid: wxContext.UNIONID // 多端统一标识(需满足 UnionID 获取条件)
  }
};
  1. app.js中设置初始化云开发环境
onLaunch: function() {
    // 初始化云开发环境
    if (wx.cloud) {
      wx.cloud.init({
        env: 'kustudy2025-2gxdfl2c8d10f3df',
        traceUser: true,
        success: res => {
          console.log('云开发环境初始化成功', res);
          // 缓存云开发环境是否可用的状态
          wx.setStorageSync('cloudEnvAvailable', true);
        },
        fail: err => {
          console.error('云开发环境初始化失败', err);
          // 缓存云开发环境是否可用的状态
          wx.setStorageSync('cloudEnvAvailable', false);
          // 显示友好的提示信息给用户
          wx.showToast({
            title: '云开发环境不可用',
            icon: 'none',
            duration: 2000
          });
        }
      })
    } else {
      console.error('当前微信版本不支持云开发,请升级到最新版本');
      wx.setStorageSync('cloudEnvAvailable', false);
    }
  },

03 数据库

【5★20分钟入门数据库】 https://www.bilibili.com/video/BV1Mm5kzHEWA/?share_source=copy_web&vd_source=e382d5e4e6b9fca0eddfd09f9d93b3b8

第二范式(2NF):消除非主属性对主键的部分依赖。和主键不讲同一件事的单开一张表

  1. 两张表,1:n的关系,n的那张添加外键
    第三范式(3NF)消除非主属性之间的传递依赖(和主键不是直接相关的移出去)

image

  1. m:n 三张表,第三张表两个外键
    image

n:m

(一)从数据库中获取信息

// 从数据库获取用户的完整信息,包括K币
const db = wx.cloud.database();
const userResult = await db.collection('Users').where({_openid: openid}).get();
console.log('从数据库获取用户信息结果:', userResult);

如何你获取不到信息,要看看设置权限。设置“所有人可读”,然后再重启小程序。
image

(二)添加数据到数据库Users中

const dbUsers = wx.cloud.database().collection('Users') // 引用 Users 集合
//添加数据到数据库Users中
dbUsers.add({
	data: {
		_openId: userInfo.openId,
		nickName: userInfo.nickName,
		avatarUrl: userInfo.avatarUrl,
		createTime: new Date()
	}
})

(三)添加数据表到数据库

  1. 内容都要改为文本型
    image

  2. 乱码:https://ask.csdn.net/questions/8214765

  3. "(.*)"替换为“$1”,将'(.*)'替换为“$1”,数据中不能存在英文单引号或双引号
    image

  4. 检查错误
    image

基础功能

获取用户的微信昵称和ID: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
openid:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

posted @ 2025-10-01 09:45  MrFlySand-飞沙  阅读(14)  评论(0)    收藏  举报