首页 > 编程语言 >微信小程序开发——注册登录(需要云服务器支撑噢)

微信小程序开发——注册登录(需要云服务器支撑噢)

时间:2024-10-27 14:51:13浏览次数:3  
标签:index const 微信 程序开发 mine userInfo 服务器 data wx

话不多说,先上图: (这是我实现的注册登陆界面,而且登陆实现后可以长时间保留)

 前景工作:

1、在云环境下构建:login云函数

2、一张图片:

3、pages下面构建pages/mine/index路径。

 1、app.js代码

// app.js
App({
    onLaunch(){
        wx.cloud.init({
            env:'自己构建的云环境名字',
            traceUser:true,
        })
    }
})

2、云环境下面构建的login云函数的index.js文件代码

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

/* 指定云函数环境 使用云函数前,必须指定环境 */
cloud.init({ 
    env: cloud.DYNAMIC_CURRENT_ENV 
}) // 使用当前云环境

// 云函数入口函数  event:前端传向后端的字段
exports.main = async (event) => {
    const {  nickName,avatarUrl } =  event 
    const { OPENID } = cloud.getWXContext()

    /**  1、初始化集合 */
    const db = cloud.database()

    /**  2、指定集合 */
    const userInfo = db.collection('userInfo')
    
    /* 3、查询当前用户是否注册过 */
    const { data } = await userInfo.where({
        _openid:OPENID
    }).get()

    if(data.length === 0){
      /** a、数据库内没有当前用户的信息(注册) */
        /**  3、数据库内新增数据 */
        const { _id } = await userInfo.add({
            data:{
                nickName,
                avatarUrl,
                love:0,
                follow:0,
                message:0,
                _openid:OPENID
            }
        })
        /* doc:是接收_id,快速返回该id的数据 */
        const user = await userInfo.doc(_id).get()

        return{
            data:user.data
        }
    }else{
        /** b、数据库存在当前用户信息,则直接返回当前用户信息(登录) */
        return{
            data: data[0]
        }
    }
}

 3、pages下面的mine,mine下面的index.js代码

// pages/mine/index.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        userInfo:null
    },
    /* 用户授权*/
    async login(){
        //1、用户授权获取信息
        const { userInfo:{nickName,avatarUrl} } = await wx.getUserProfile({
            desc:'用于完善用户信息'
        })

        //2、把当前的用户信息交付给后端,存储生成账号
        const { result: { data } } = await wx.cloud.callFunction({
            //云函数login
            name:'login',
            //data: 传递字段
            data:{
                nickName,
                avatarUrl
            }
        })

        //3、将用户信息进行本地存储
        wx.setStorageSync('userInfo', data)

        this.setData({
            userInfo: data
        })
    },

    /** 获取用户信息 */
    async getUserInfo(){
        /** 判断用户是否登录 */
        const data = wx.getStorageSync('userInfo')
        if(data){
            //登陆了,更新数据
            const userInfo = await wx.cloud.database().collection('userInfo').doc(data._id).get()
            this.setData({
                userInfo: userInfo.data
            })
        }
    },

    /* 退出登录   ---- 实际过程中,要调用接口通知后端清空存储 log日志 计算用户登陆时长*/
    close(){
        wx.clearStorage()
        this.setData({
            userInfo: null
        })
    },

    /** 生命周期函数--监听页面显示  进入页面触发 */
    onShow() {
        this.getUserInfo()
    },

    /*生命周期函数--监听页面加载*/
     //页面初始化执行1次,tabbar页面切换时不会销毁
     onl oad(options) {
        //当前页面 this.getTabBar() 等同于 在tabbar页直接写this
        this.getTabBar().setData({
            active: 'mine'
        })
    },

})

4、pages下面的mine,mine下面的index.json代码

{
    "navigationBarTitleText": "我的",           #界面顶上文字内容
    "navigationBarTextStyle":"white",           #界面顶上文字颜色
    "navigationBarBackgroundColor": "#ff6034",    #界面顶上背景色
    "usingComponents": {
        "van-notice-bar": "@vant/weapp/notice-bar/index",
        "van-cell": "@vant/weapp/cell/index",
        "van-cell-group": "@vant/weapp/cell-group/index"   #vant网站组件引用 
      }
}

 组件引用:快速上手 - Vant Weapp

请按照这个界面的操作进行。

博主是:通过 npm 安装

于是乎:操作:

步骤一 通过 npm 安装

# 通过 npm 安装

npm i @vant/weapp -S --production

步骤二 修改 app.json

将 app.json 中的 "style": "v2" 去除,小程序的新版基础组件强行加上了许多样式,难以覆盖,不关闭将造成部分组件样式混乱。

步骤三 构建 npm 包

打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件。

具体组件使用流程,请参见vant官网:Button 按钮 - Vant Weapp(这里是按钮组件示例)

  5、pages下面的mine,mine下面的index.wxml代码

<view id="mine">
  <view class="header">
    <van-notice-bar color="#ffffff" background="rgba(0,0,0,0.2)" left-icon="volume-o" text="绕梁遏云“啰儿调”,非遗振乡创新高。重庆人文科技学院实践团参观“啰儿调”文化长廊,学习“啰儿调”历史背景,向民众派发调查问卷,广泛征集想法建议,让更多的人了解和认识到“啰儿调”这一非遗项目的魅力所在,引导群众共同参与保护和传承工作,唤起了群众对乡村振兴事业的关注和热情,实践团将与民众共同为实现乡村全面振兴而努力。" />
    <!-- 第一套 -->
    <view wx:if="{{ userInfo }}">
      <image class="image" src="{{ userInfo.avatarUrl }}" />
      <view class="name"> {{ userInfo.nickName }} </view>
    </view>
    <!-- 第二套 -->
    <view wx:else>
      <image class="image" src="/assets/image/header.png" />
      <view class="name" bind:tap="login"> 登录 / 注册 </view>
    </view>


    <view class="nav">
      <view class="nav-item">
        <view> {{ userInfo.love || 0 }} </view>
        <view class="nav-item-title">关注</view>
      </view>
      <view class="nav-item">
        <view> {{ userInfo.follow || 0 }} </view>
        <view class="nav-item-title">粉丝</view>
      </view>
      <view class="nav-item">
        <view> {{ userInfo.message || 0 }} </view>
        <view class="nav-item-title">消息</view>
      </view>
    </view>
  </view>

  <view class="group">
    <van-cell-group>
      <van-cell icon="records-o" title="问卷调查" is-link />
      <van-cell icon="like-o" title="我的关注" is-link />
      <van-cell icon="phone-o" title="联系客服" is-link />
    </van-cell-group>
  </view>

  <View class="group">
    <van-cell-group>
      <van-cell icon="comment-o" title="线上交流平台" is-link />
      <van-cell wx:if="{{ userInfo }}" bind:tap="close" icon="close" title="退出登录" is-link />
    </van-cell-group>
  </View>

</view>

 6、pages下面的mine,mine下面的index.wxss代码

/* pages/mine/index.wxss */
#mine{
    width: 100%;
    height: 100%;
    background: #f3f3f3;
}
.header{
    width: 100%;
    height: 410rpx;
    background: #ff6034;
    position: relative;
}

.van-notice-bar{
    height: 40rpx !important;
    line-height: 40rpx !important;
}

.image{
    width: 120rpx;
    height: 120rpx;
    border-radius: 50%;
    margin-top: 30rpx;
    position: relative;
    left: 50%;
    margin-left: -60rpx;
}

.name{
    text-align: center;
    color:#fff;
    margin-top: 10rpx;
}

.nav{
    width: 100%;
    display:flex ;
    position:absolute;
    bottom: 30rpx;
}

.nav-item{
    flex:1;
    text-align: center;
    color:#fff;
}
.nav-item-title{
    font-size: 26rpx;
    margin-top: 10rpx;
}

.group{
    margin-top: 20rpx;
}

标签:index,const,微信,程序开发,mine,userInfo,服务器,data,wx
From: https://blog.csdn.net/m0_61883479/article/details/143257825

相关文章

  • 我有三台ubuntu服务器,手把手教我从0搭建HBase,然后往里存一些数据。
    好的,我们可以一步步来搭建一个基本的HBase集群,并在里面存储一些数据。这里的步骤包括在三台Ubuntu服务器上配置HBase所需的依赖、安装HBase、配置和启动集群、测试存储和查询数据。假设这三台服务器的IP地址分别为192.168.1.101、192.168.1.102和192.168.1.103,其中第......
  • 为什么要用云服务器
    使用云服务器的原因有:一、灵活性和可扩展性;二、降低成本;三、高可用性和容错性;四、快速部署和弹性资源;五、备份和恢复;六、全球范围的访问等。灵活性和可扩展性是指,云服务器允许用户根据实际需求灵活地调整计算、存储和网络资源,从而满足不同业务场景的需求。一、灵活性和可扩展......
  • 虚拟线程实现Web服务器(处理HTTP请求)
    使用Java虚拟线程开发一个Web服务器可以显著提升并发能力,同时保持代码简洁。在这个示例中,我们将使用Java21的虚拟线程实现一个简单的HTTPWeb服务器,逐步解释每个部分的代码。实现目标通过虚拟线程处理HTTP请求。创建一个简单的Web服务器来响应客户端请求。适配IO......
  • 基于微信小程序的实验室管理系统的设计与实现-计算机毕业设计源码+LW文档
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了实验室管理微信小程序的开发全过程。通过分析实验室管理微信小程序管理的不足,创建了一个计算机管理实验室管理微信小程序的方案。文章介绍了实验室管理微信小程序的系统分析......
  • 基于微信小程序的停车场管理系统设计与开发-计算机毕业设计源码+LW文档
    摘 要由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改变运营策略。随着微信小程序的出现,解决了用户非独立APP不可访问内容的痛点,所......
  • 基于微信小程序的校园二手交易平台系统-计算机毕业设计源码+LW文档
    一、课题意义(包括课题的理论意义和现实意义)随着互联网的迅速发展和移动设备的普及,微信的使用也越来越广泛,基于微信诞生的微信小程序由于其自身不需要下载、开发成本低、更容易接触用户等特点,使用的范围也越来越广,许多商家和企业也选择通过微信小程序向用户提供服务。另外随着......
  • Windows服务器修改默认远程登录端口
    起因公司一台windows服务器中了病毒,排查找到了后门文件并做了处理(处理过程不作描述),通过快照恢复了系统,修改默认远程登录端口,可以增加服务器的安全性,这里做个记录,具体步骤如下。修改注册表使用Win+R快捷键调出“运行”窗口,输入regedit,然后按Enter打开注册表编辑器。......
  • 怎样使用ThinkPHP6进行支付宝和微信支付操作
    ​本文将详细讲解如何在ThinkPHP6框架中实现支付宝和微信的支付功能:1.准备基础环境和工具;2.集成支付宝SDK;3.集成微信支付SDK;4.配置支付参数;5.处理支付回调。让您轻松为网站或应用集成流行的支付方式,为用户提供便捷的支付体验。1.准备基础环境和工具在开始之前,确保你已经......
  • 基于企业微信与开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的客户运营模型优化
    摘要:本文聚焦于企业微信在客户运营中的重要作用,并深入探讨如何将开源AI智能名片、2+1链动模式以及S2B2C商城小程序融入其中,构建更完善的客户运营模型。分析了企业微信在客户关系管理方面的优势,阐述了新元素在触达引流、沟通转化和用户服务这三大客户运营功能中的应用价......
  • 沈阳工业大学助农扶贫微信小程序的设计与实现[论文+源码]
    设计题目:沈阳工业大学助农扶贫微信小程序的设计与实现摘要由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改变运营策略。随着微信小......