当前位置: 首页 > news >正文

(十一)、用户中心页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面

1.1 新建个人中心页面

在这里插入图片描述

1.2 纯净版个人中心页面代码:
<template><view class="user"><view class="top"><view class="group"><view class="userinfo"><!-- 顶部 左侧 头像 --><view class="pic"><image src="../../static/images/user-default.jpg" mode="aspectFill"></image></view><!-- 顶部 左侧 昵称和时间 已登录 --><view class="text" v-if="true"><view class="nickname">匿名</view><view class="year"><uni-dateformat :date="new Date() - 360000" :threshold="[3600,99*365*24*60*60*1000]"></uni-dateformat>注册</view></view><!-- 顶部 左侧 昵称和时间 未登录 --><view class="text" v-else><view class="nickname">点击登录</view></view></view><!-- 顶部 右侧右箭头 --><view class="more"><text class="iconfont icon-a-10-you"></text></view></view><!-- 顶部 背景图 --><view class="bg"><image src="../../static/images/user-default.jpg" mode="aspectFill"></image></view></view><view class="main"><view class="info"><view class="item"><text>33</text>获赞</view><view class="item"><text>11</text>评论</view><view class="item"><text>5</text>发文</view></view><view class="list"><view class="group"><view class="item"><view class="left"><text class="iconfont icon-a-24-bianji"></text><text class="text">我的长文</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view><view class="item"><view class="left"><text class="iconfont icon-a-106-xihuan"></text><text class="text">我的点赞</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view><view class="item"><view class="left"><text class="iconfont icon-a-21-xiugai"></text><text class="text">评论过的</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view></view><view class="group"><view class="item"><view class="left"><text class="iconfont icon-a-32-wenjian"></text><text class="text">关于</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view><view class="item"><view class="left"><text class="iconfont icon-a-5-xinxi"></text><text class="text">意见反馈</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view></view><view class="group"><view class="item"><view class="left"><text class="iconfont icon-a-73-tuichu"></text><text class="text">退出登录</text></view><view class="right"><text class="iconfont icon-a-10-you"></text></view></view></view></view></view></view>
</template><script>export default {data() {return {};}}
</script><style lang="scss">.user {.top {height: 300rpx;background: #bbb;padding: 0 30rpx;padding-top: var(--status-bar-height);position: relative;display: flex;align-items: center;.group {position: relative;z-index: 10;display: flex;align-items: center;justify-content: space-between;width: 100%;color: #fff;.userinfo {display: flex;width: 100%;align-items: center;.pic {width: 120rpx;height: 120rpx;border-radius: 50%;overflow: hidden;border: 2px solid #fff;image {width: 100%;height: 100%;}}.text {padding-left: 20rpx;.nickname {font-size: 44rpx;font-weight: 600;}.year {font-size: 26rpx;opacity: 0.6;padding-top: 5rpx;}}}.more {.iconfont {font-size: 40rpx;}}}.bg {position: absolute;top: 0;left: 0;width: 100%;height: 100%;overflow: hidden;image {width: 100%;height: 100%;filter: blur(20px);transform: scale(2);opacity: 0.5;}}}.main {width: 100%;min-height: 200rpx;background: #fff;border-radius: 30rpx;transform: translateY(-30rpx);padding: 30rpx 0;.info {padding: 10rpx 30rpx;display: flex;font-size: 30rpx;.item {padding-right: 20rpx;color: #888;text {font-weight: 600;color: #333;}}}.list {.group {padding: 15rpx 30rpx;border-bottom: 15rpx solid #f4f4f4;.item {display: flex;justify-content: space-between;align-items: center;padding: 25rpx 0;font-size: 36rpx;color: #555;border-bottom: 1rpx solid #f8f8f8;.left {display: flex;align-items: center;.iconfont {font-size: 38rpx;margin-right: 10rpx;}}.right {.iconfont {font-size: 26rpx;}}}.item:last-child {border: none;}}.group:last-child {border: none;}}}}
</style>
1.3 页面效果

在这里插入图片描述

2,使用uni-id-pages中的vuex状态管理

2.1 self页面中,script中引入store.js:

store.js位置:
在这里插入图片描述

  import {store,mutations} from '@/uni_modules/uni-id-pages/common/store.js'

在计算属性中定义两个方法(在当前页面拿到store中的登录用户信息和登录状态):

    computed: {userInfo() {return store.userInfo},hasLogin() {return store.hasLogin}},

测试一下,在onload中打印输出:

    onLoad() {console.log(this.userInfo)console.log(this.hasLogin)}

结果:
在这里插入图片描述

2.2 渲染顶部self页面
          <!-- 顶部 左侧 头像 --><view class="pic"><image v-if="hasLogin&&userInfo.avatar_file&&userInfo.avatar_file.url" :src="userInfo.avatar_file.url"mode="aspectFill"></image><image v-else src="../../static/images/user-default.jpg" mode="aspectFill"></image></view><!-- 顶部 左侧 昵称和时间 已登录 --><view class="text" v-if="hasLogin"><view class="nickname">{{userInfo.nickname||userInfo.username||userInfo.mobile}}</view><view class="year"><uni-dateformat :date="new Date() - 360000" :threshold="[3600,99*365*24*60*60*1000]"></uni-dateformat>注册</view></view>

3,个人中心页面中的退出功能

3.1 修改一下store.js中的logout方法

三目运算符–修改点击退出是跳转的url页面地址
store.js

	async logout() {// 1. 已经过期就不需要调用服务端的注销接口	2.即使调用注销接口失败,不能阻塞客户端if(uniCloud.getCurrentUserInfo().tokenExpired > Date.now()){try{await uniIdCo.logout()}catch(e){console.error(e);}}uni.removeStorageSync('uni_id_token');uni.setStorageSync('uni_id_token_expired', 0)uni.redirectTo({url: `/${pagesJson.uniIdRouter?.loginPage ?? 'pages/self/self'}`, //uni_modules/uni-id-pages/pages/login/login-withoutpwd});uni.$emit('uni-id-pages-logout')this.setUserInfo({},{cover:true})},
3.2 self个人中心页面中使用退出方法
      //退出登录logout() {if (this.goLoginPage()) return;uni.showModal({title: "是否确认退出?",success: res => {console.log(res);if (res.confirm) {mutations.logout()}}})},//判断是否登录的方法goLoginPage() {if (!this.hasLogin) {uni.showToast({title: "未登录",icon: "none"})return true;}return false}

4,uniidrouter路由配置限制用户登录

uniIdRouter自动路由 参考链接

4.1 在pages.json中配置
  "uniIdRouter": {"loginPage": "uni_modules/uni-id-pages/pages/login/login-withpwd", // 登录页面路径"needLogin": ["pages/edit/edit", // 需要登录才可访问的页面列表,可以使用正则语法"uni_modules/uni-id-pages/pages/userinfo/userinfo"],"resToLogin": true // 自动解析云对象及clientDB的错误码,如果是客户端token不正确或token过期则自动跳转配置的登录页面,配置为false则关闭此行为,默认true}
4.2 跳转到个人资料页面

个人资料页面位置:/uni_modules/uni-id-pages/pages/userinfo/userinfo
修改页面:

<view class="group" @click="toUserInfo">

点击跳转方法:

      //跳转到编辑个人资料toUserInfo() {if (this.hasLogin) {uni.navigateTo({url: '/uni_modules/uni-id-pages/pages/userinfo/userinfo'})} else {let route = this.$mp.page.route;uni.navigateTo({url: '/uni_modules/uni-id-pages/pages/login/login-withpwd?uniIdRedirectUrl=/' + route})}},

如果没有登录,就跳转到登录页面,如果登录了,点击跳转到个人资料页面。
个人资料页面:
在这里插入图片描述

4.3 设置头像区域背景
      <!-- 顶部 背景图 --><view class="bg"><image v-if="hasLogin&&userInfo.avatar_file&&userInfo.avatar_file.url" :src="userInfo.avatar_file.url"mode="aspectFill"></image><image v-else src="../../static/images/user-default.jpg" mode="aspectFill"></image></view>

相关文章:

(十一)、用户中心页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面 1.1 新建个人中心页面 1.2 纯净版个人中心页面代码&#xff1a; <template><view class"user"><view class"top"><view class"group"><view class"userinfo"><!-- 顶部 左侧 头像 …...

LA@复数和复矩阵@实对称阵相关定理

文章目录复数&#x1f388;复矩阵和复向量共轭矩阵性质定理实对称阵的相关定理复数&#x1f388; 复数 (数学) (wikipedia.org) 加法&#xff1a;(abi)(cdi)(ac)(bd)i)减法&#xff1a;(abi)−(cdi)(a−c)(b−d)i)乘法&#xff1a;(abi)(cdi)acbciadibdi2(ac−bd)(bcad)i除法&…...

cmd set命令笔记

使用 set是cmd最基础的命令&#xff0c;每个人都会用&#xff0c;但其实它还是有些知识的。 set 用来接收入参 set /p var请选择&#xff08;1或2或3&#xff09;: echo %var%可以接收输入的参数。 set /p var请选择&#xff08;1或2或3&#xff09;: echo %var% 语法 he…...

IB学校获得IBO授权究竟有多难?

IB 学校认证之路&#xff0c;道阻且长 The road to IB school accreditation is long and difficult一所学校能获得IB授权必须经过IBO非常严格的审核&#xff0c;在办学使命&教育理念、组织架构、师资力量&授课技能、学校硬件设施和课程体系上完全符合标准才可获得授权…...

火山引擎 DataTester:A/B 测试,让企业摆脱广告投放“乱烧钱”

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在广告投放的场景下&#xff0c;一线广告优化师通常会创建多个计划&#xff0c;去测试不同的广告素材效果。这套方法看似科学&#xff0c;实际上却存在诸多问题&…...

黑马redis学习记录:缓存

一、介绍 什么是缓存&#xff1f; 缓存(Cache)&#xff0c;就是数据交换的缓冲区&#xff0c;俗称的缓存就是缓冲区内的数据&#xff0c;一般从数据库中获取&#xff0c;存储于本地代码 缓存无处不在 为什么要使用缓存&#xff1f; 因为速度快,好用缓存数据存储于代码中,而…...

CD20靶向药物|适应症|市场销售-上市药品前景分析

CD20是靶向治疗的第一个靶点&#xff0c;是B细胞淋巴瘤的现代治疗药物。CD20作为治疗剂的使用被认为是方便的&#xff0c;原因有二。首先&#xff0c;在 CD20 阳性肿瘤的情况下&#xff0c;这种受体大量存在于 B 淋巴细胞表面——每个细胞大约有十万个分子。其次&#xff0c;干…...

多源 复制

使复制从属服务器能够同时从多个主服务器接收事务至少需要两个主服务器和一个从属服务器设备从属服务器为每个主服务器创建一个 复制通道从属服务器必须使用基于表的资料档案库多源复制与基于文件的资料档案库不兼容不尝试检测或解决冲突如果需要此功能&#xff0c;则由应用程序…...

微服务项目【消息推送(RabbitMQ)】

创建消费者 第1步&#xff1a;基于Spring Initialzr方式创建zmall-rabbitmq消费者模块 第2步&#xff1a;在公共模块中添加rabbitmq相关依赖 <!--rabbitmq--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo…...

vr电力刀闸事故应急演练实训系统开发

电力事故是在电力生产和输电过程中可能发生的意外事件&#xff0c;它们可能会对人们的生命财产安全造成严重的威胁。因此&#xff0c;电力事故应急演练显得尤为重要。而VR技术则可以为电力事故应急演练提供一种全新的解决方案。 在虚拟环境中&#xff0c;元宇宙VR会模拟各种触电…...

C++类和对象补充

目录 前言&#xff1a; 1. 构造函数->初始化列表 1.1 初始化列表出现原因 1.2 初始化列表写法 2. explicit关键字 2.1 explict的出现 2.2 explict的写法 3. static成员 4. 友元 4.1 友元函数 4.2 友元类 5. 内部类和匿名对象 5.1 内部类 5.2 匿名对象 前言&a…...

08 SpringCloud 微服务网关Gateway组件

网关简介 大家都都知道在微服务架构中&#xff0c;一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢&#xff1f; 如果没有网关的存在&#xff0c;我们只能在客户端记录每个微服务的地址&#xff0c;然后分别去用。 这样的架构&#xff0c;会存…...

极验3代 加密分析

目标链接 aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s接口分析 极验参数重要信息 gt和challenge&#xff1b;gt是固定的&#xff0c;但是challenge每次请求会产生不同的&#xff0c;这里的请求的并没有什么加密参数。 下一个请求 gettype.php&#xff0c…...

python 数据分析可视化实战 超全 附完整代码数据

代码数据&#xff1a;https://download.csdn.net/download/qq_38735017/873799141.1 数据预处理1.1.1 异常值检测①将支付时间转为标准时间的过程中发生错误&#xff0c;经排查错误数据为‘2017/2/29’,后将其修改为‘2017/2/27’。②经检测发现部分订单应付金额与实付金额都为…...

有趣的HTML实例(十三) 咖啡选择(css+js)

一个人追求目标的路途是孤单的&#xff0c;一个人独品辛酸的时候是寂寥的&#xff0c;一个人马不停蹄的追赶着&#xff0c;狂奔着&#xff0c;相信前方是一片光明&#xff0c;我从不放弃希望&#xff0c;就像我对生活的信念&#xff0c;没有人可以动摇。 ——《北京青年》 目录…...

【力扣-LeetCode】1139. 最大的以 1 为边界的正方形 C++题解

1139. 最大的以 1 为边界的正方形难度中等137收藏分享切换为英文接收动态反馈给你一个由若干 0 和 1 组成的二维网格 grid&#xff0c;请你找出边界全部由 1 组成的最大 正方形 子网格&#xff0c;并返回该子网格中的元素数量。如果不存在&#xff0c;则返回 0。示例 1&#xf…...

【JavaGuide面试总结】Redis篇·下

【JavaGuide面试总结】Redis篇下1.如何使用 Redis 事务&#xff1f;2.如何解决 Redis 事务的缺陷&#xff1f;3.说说Redis bigkey吧4.大量 key 集中过期问题怎么解决的5.如何保证缓存和数据库数据的一致性&#xff1f;6.缓存穿透有哪些解决办法&#xff1f;7.缓存击穿有哪些解决…...

ForkJoinPool原理

1、概述 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架。ForkJoinPool是Java中提供了一个线程池&#xff0c;特点是用来执行分治任务。主题思想是将大任务分解为小任务&#xff0c;然后继续将小任务分解&#xff0c;直至能够直接解决为止&#xff0c;然后再依次将任…...

02 python基本语法和数据类型

基本语法 python脚本可以在python交互式shell或者代码编辑器中编写与运行。python文件的扩展名一般为.py python使用缩进来区分不同的代码块,此特性有利于提高代码可读性。 下面是一个简单的python条件语句代码: 小明=矮穷错 小红=白富美 小华=高富帅 小李=程序员某人 = &quo…...

【办公类-16-09】“2022下学期 大班运动场地分配表-跳过节日循环排序”(python 排班表系列)

样例展示&#xff1a;跳过节日的运动场地循环排序表&#xff08;8个班级8组内容 下学期一共20周&#xff09;背景需求&#xff1a;上学期做过一次大班运动场地安排&#xff0c;跳过节日。2023.2下学期运动场地排班&#xff08;跳过节日&#xff09;又来了。一、场地器械微调二、…...

推理成本直降63%的关键路径,深度解析动态视觉token剪枝与跨模态KV缓存复用技术

第一章&#xff1a;多模态大模型推理成本优化 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型&#xff08;如LLaVA、Qwen-VL、Fuyu-8B&#xff09;在图像理解、跨模态检索与视觉问答等任务中展现出强大能力&#xff0c;但其推理阶段的显存占用高、延迟大、能耗显著…...

Dify 社区版本地部署实战:从零到一的Docker Compose避坑指南

1. 为什么选择Docker Compose部署Dify社区版 第一次接触Dify社区版时&#xff0c;我被它"开箱即用"的特性吸引。作为一个长期在AI应用开发领域摸爬滚打的开发者&#xff0c;我深知搭建一个完整的LLM应用开发生态需要多少工作量。Dify把模型接入、Prompt工程、RAG流程…...

终极免费音频标注工具:Audio Annotator三步快速上手指南

终极免费音频标注工具&#xff1a;Audio Annotator三步快速上手指南 【免费下载链接】audio-annotator A JavaScript interface for annotating and labeling audio files. 项目地址: https://gitcode.com/gh_mirrors/au/audio-annotator Audio Annotator是一款基于Java…...

2026奇点大会唯一全栈实测报告:在Kubernetes Operator开发、Rust异步驱动、Python金融量化三类硬核场景下,5款AI工具生成可用代码率排名(第4名意外登顶)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI代码生成工具对比 2026奇点智能技术大会(https://ml-summit.org) 主流工具实测场景设定 为确保公平性&#xff0c;所有工具均在相同硬件环境&#xff08;NVIDIA A100 80GB 2&#xff0c;Ubuntu 24.04 LTS&#xff09;下…...

从Vulkan到SAPIEN再到RobotWin:一个云上机器人仿真环境的完整排错日志

云服务器A100环境下的Vulkan到RobotWin全链路排错实战 上周在云服务器上部署机器人仿真环境时&#xff0c;我遇到了一个令人抓狂的问题——从Vulkan到SAPIEN再到RobotWin的渲染链路中&#xff0c;不断出现segmentation fault和can not find render device错误。经过一周的反复排…...

2025年知识竞赛软件评分排行榜权威解读

&#x1f3c6; 2025年知识竞赛软件评分排行榜权威解读多维评估 聚焦实用 选型指南&#x1f4ca; 排行榜综述&#xff1a;多维评估&#xff0c;聚焦实用随着数字化教育的深入与企业培训形式的创新&#xff0c;知识竞赛软件已成为激发学习动力、检验培训成果的重要工具。2025年…...

从Markdown到专业演示文稿:md2pptx如何重构技术文档的呈现逻辑

从Markdown到专业演示文稿&#xff1a;md2pptx如何重构技术文档的呈现逻辑 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 你是否曾在深夜加班&#xff0c;只为将一份详尽的技术文档转化为演示文稿&a…...

正则表达式实战指南:从基础语法到高级应用

1. 正则表达式基础语法入门 第一次接触正则表达式时&#xff0c;我完全被那些奇怪的符号搞懵了。直到有次需要从上千条日志中提取IP地址&#xff0c;手动处理差点让我崩溃&#xff0c;这才硬着头皮学了正则。现在回想起来&#xff0c;掌握基础语法就像学骑自行车&#xff0c;开…...

实测Qwen3-TTS:上传10秒音频,AI帮你生成专属配音

实测Qwen3-TTS&#xff1a;上传10秒音频&#xff0c;AI帮你生成专属配音 1. 声音克隆技术的新突破 上周我尝试为一个儿童教育项目制作多语言版配音&#xff0c;传统方案需要聘请至少三位双语配音演员&#xff0c;预算超过2万元。当我用Qwen3-TTS-12Hz-1.7B-Base上传项目负责人…...

自然语言处理中的预测与生成技术

本期节目邀请了某机构联合创始人兼CEO Ines Montani&#xff0c;与主持人讨论如何使用自然语言处理解决实际问题。内容涵盖生成式任务与预测式任务的区别、构建处理流水线、分解问题、标注训练示例、模型微调、利用大型语言模型进行数据标注和原型开发&#xff0c;以及spaCy NL…...