微信小程序 宠物论坛1[通俗易懂]

微信小程序 宠物论坛1[通俗易懂]微信小程序宠物论坛(1)一个简单的论坛包括以下几个方面:登录模块发帖模块首页模块帖子详情模块搜索模块个人主页模块下面将从这6个方面介绍如何用微信小程序开发一个简单的论坛。1、登录模块先看界面图打开小程序首先看到这个界面,之后我们点击头像便完成授权登录。JS部分//index.js//获取应用实例constapp=getApp()constdb=wx.cloud.database()Page({data:{motto:’欢迎来到宠物论坛

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

微信小程序宠物论坛1

一个简单的论坛包括以下几个方面:

  1. 登录模块
  2. 发帖模块
  3. 首页模块
  4. 帖子详情模块
  5. 搜索模块
  6. 个人主页模块

下面将从这6个方面介绍如何用微信小程序开发一个简单的论坛。

登录模块

先看界面图
在这里插入图片描述
打开小程序首先看到这个界面,之后我们点击头像便完成授权登录。

JS部分

//index.js
//获取应用实例
const app = getApp()
const db = wx.cloud.database()

Page({
  data: {
    motto: '欢迎来到宠物论坛',
    userInfo: {},
    nickname:"",
    heads:"",
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
 
  onLoad: function () {
   
  
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse) {
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          heads:res.userInfo.avatarUrl,
          nickname:res.userInfo.nickName,
          hasUserInfo: true
        })
        //  console.log(this.data.heads)
        //  console.log(this.data.nickname)
      }
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            heads: res.userInfo.avatarUrl,
            hasUserInfo: true
          })
        }
      })
    }

    // 获取用户openid
    wx.cloud.callFunction({
      name: "getopenid",
      success: res => {
     console.log(res.result.openid)
       

        //  this.setData({
        //    openid: res.result.openid
        //  })
        console.log(res.result.openid)
        this.setData({
          openid1: res.result.openid
        })
        console.log("openid1的值为:"+this.data.openid1)
      },
      fail(res) {
        console.log("获取openid失败")
      }
    })

    // 获取用户的openid,然后对比数据库,如果是老用户直接跳转
    const db = wx.cloud.database();
    db.collection('user').
      where({
        _openid: this.data.openid1
      })
      .get({
        success: function (res) {
          console.log("查询成功")
          console.log(res.data)
         
         if(res.data!=''){
             wx.reLaunch({
        url: '../mine/mine?id=openid1'
      })
         }
          console.log("openid2的值为:"+res.data[0]._openid)
          this.setData({
           openid2:res.data[0]._openid
          })


        }
      })

    // if (this.data.openid1 == this.data.openid2) (
    //   wx.reLaunch({
    //     url: '../mine/mine?id=openid1'
    //   })
    // )
  

  },
  getUserInfo: function (e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      heads: e.userInfo.avatarUrl,
      hasUserInfo: true
    })
  
  },

  
  

 //如果是新用户 点击头像处理函数
  bindViewTap: function () {
    const heads=this.data.heads
    const nickname=this.data.nickname
    db.collection('user').add({
      data: {
        nickname:nickname,
        heads:heads
      },
      success: function (res) {
        this.setData({
          openid:res._openid
        })
        
      }
    })
    const openid=this.data.openid
    wx.reLaunch({
      url: '../mine/mine?id=openid'
    })
  },

})

WXML部分

<view class="container">
  <view class="userinfo">
    <button wx:if="{
  
  {!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{
  
  {userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{
  
  {userInfo.nickName}}</text>
    </block>
  </view>
  <view class="usermotto">
    <text class="user-motto">{
  
  {motto}}</text>
  </view>
</view>

WXSS部分

/**index.wxss**/
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.userinfo-nickname {
  color: #aaa;
}

.usermotto {
  margin-top: 200px;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185008.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java数字图像处理基础 – 必读

    写了很多篇关于图像处理的文章,没有一篇介绍Java2D的图像处理API,文章讨论和提及的API都是基于JDK6的,首先来看Java中如何组织一个图像对象BufferedImage的,如图:一个Buf

    2021年12月21日
    44
  • kafka安装完整步骤_Kafka教程

    kafka安装完整步骤_Kafka教程<!DOCTYPEhtml><html><head><title>Kafka入门教程之一:安装</title><metacharset=’utf-8′><linkhref=’https://cdn.maxiang.io/res-min/themes/marxico.css’rel=’st…

    2026年1月24日
    3
  • scratch编程小游戏——黄金矿工

    黄金矿工的玩法就是操控一个不断摆来摆去的钩子去挖出黄金,现在我们就来用scratch编一个黄金矿工首先新建好变量:矿车要画出许多的造型:代码:钩爪的绳索是这个游戏最为复制的一点,方法是移动后画出一条线,返回时用背景一样的颜色来覆盖,我们首先来画出造型:红色的是中心位置代码如下:(此代码需要用到一部分自定义,不懂的见文章末尾链接)自定义部分是这个代码的核心:接下来是黄金,造型的话要画出三个:大、中、小各一个代码如下:黄金代码是程序中非常重要的一环,一定不要有差错现

    2022年4月4日
    2.3K
  • 提供一个免费的CSDN下载账号

    提供一个免费的CSDN下载账号

    2021年11月15日
    109
  • Python开发命名规范

    Python开发命名规范引言软件开发中规范的命名能够使你的代码简洁美观,完美的命名规范是一个程序员最基本的技能。下面我先简单说说两种常用的命名方式:驼峰命名法混合使用大小写字母来构成变量和函数的名字,以大写字母代替语句间隔的命名方法。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。大驼峰命名:首字母大写。如CamelCase、JavaScript,HelloWorl…

    2022年6月25日
    33
  • 数据库常用sql语句总结

    数据库常用sql语句总结查看时右侧可以打开CSDN自带的目录,方便查看目录一、基础1.SELECT语句2.SELECTDISTINCT语句3.WHERE子句4.AND和OR运算符5.ORDERBY语句6.INSERTINTO语句7.Update语句8.DELETE语句二、高级1.TOP子句2.LIKE操作符3.SQL通配符4.IN…

    2022年6月22日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号