微信小程序 宠物论坛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)
上一篇 2022年10月7日 上午11:16
下一篇 2022年10月7日 上午11:36


相关推荐

  • typescript 多继承_c继承和多态

    typescript 多继承_c继承和多态前言对于传统的JavaScript程序我们会使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员使用这些语法就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来

    2022年7月29日
    16
  • 常用的JS页面跳转代码调用大全

    常用的JS页面跳转代码调用大全一、常规的JS页面跳转代码1、在原来的窗体中直接跳转用<scripttype="text/javascript">window.location.href=&q

    2022年7月1日
    66
  • TDengine:开源、高效的物联网大数据平台

    TDengine:开源、高效的物联网大数据平台一 物联网介绍物联网是一个非常宽泛的概念 它意味着各种设备和机器可以通过互联网进行连接并进行信息交换 主要应用在家居 医疗 交通等领域 2021 年 7 月 13 日 中国互联网协会发布了 中国互联网发展报告 2021 物联网市场规模高达 1 7 万亿元 二 主流平台 1 亚马逊云科技 aws aws 物联网服务可以连接和管理数十亿台设备 存储和分析工业 家居消费 商业和汽车业工作负载数据 形成了庞大的云服务生态系统 2 阿里云 阿里云物联网平台是

    2026年3月18日
    2
  • 符号“∑”和“Π”的用法。

    符号“∑”和“Π”的用法。符号 和 的用法 ecnelises nbsp posted 2011 年 2 月 06 日 07 33in nbsp 计算机 nbsp withtags nbsp 公式 nbsp 数学 nbsp 级数 nbsp 记号 nbsp 6492 阅读在数学中 符号 和 分别用来表示求和与求积 首先是函数的累积求和 n 取 m k 中的连续整数值 这个变量 n 可以换成其他任意字母 比如 x 我们把下面的 n m 和

    2026年3月16日
    2
  • npm使用淘宝镜像(npm切换淘宝镜像)

    1.通过cnpm使用淘宝镜像:npminstall-gcnpm–registry=https://registry.npm.taobao.org2.将npm设置为淘宝镜像:npmconfigsetregistryhttps://registry.npm.taobao.org3.查看cnpm镜像设置:cnpmconfiggetregistry

    2022年4月10日
    362
  • Sizzle源码

    Sizzle源码首先使用原生语句查找 其次在 context 下找到所有节点元素 校验元素是否匹配选择器 进行过滤 获取到待查询的元素 过滤时分为两种情形 针对选择器是否带 first 等位置关系伪类 若携带 setMatcher 函数得到过滤函数 first 伪类的校验函数也通过引用对象的形式 滤除 未匹配的节点 若不携带 elementMatch 得到校验函数 其中层级关系如 form gt

    2026年3月18日
    1

发表回复

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

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