uniapp开发一个交流社区小程序

uniapp开发一个交流社区小程序

假期的时候简单学了一下uniapp,想开发一款类似百度贴吧的交流社区来练练手。本篇文章主要记录开发过程,文末附上项目地址。

主要需要开发以下几个页面。

信息页面

该页面的功能主要用来展示信息,并且实现分享、浏览量、点赞以及二级评论等功能。

部分代码展示:

js 复制代码
		// 点击评论帖子
		clickCommentPost(post) {
			console.log('clickCommentPost');
			// 重置评论框
			this.$refs.starCommentReplyRef.resetCommentReply()
			this.$refs.starCommentReplyRef.focus = true
			this.goArea('#comment-up-area')
		},
		// 点击删除评论
		clickDeleteComment(comment) {
			uni.showModal({
				title: '提示',
				content: '确定要删除该评论吗?',
				success: async (res) => {
					if (res.confirm) {
						uni.showLoading({
							title: '删除中',
							mask: true
						})
						await uniCloud.callFunction({
							name: 'star-community-comment',
							data: {
								flag: 3,
								data: {
									id: comment.id,
									updateData: {
										status: 3, // 0 审核中 1 正常 2 审核不通过 3 已删除 4 已违规
									}
								}
							}
						})
						if (comment.status === 1) {
							this.changePostCommentCount(comment.post_id, -1)
						}
						this.mescroll.resetUpScroll()
						uni.hideLoading()
						uni.showToast({
							title: '删除成功'
						})
						this.post = await this.getPost(this.post.id)
					}
				}
			})
		},
		// 选中评论
		selectComment(comment) {
			console.log('selectComment');

			// 重置评论框
			this.$refs.starCommentReplyRef.resetCommentReply()

			if (comment.father_id) {
				this.$refs.starCommentReplyRef.to_father_id = comment.father_id
				this.$refs.starCommentReplyRef.to_child_id = comment.id
			} else {
				this.$refs.starCommentReplyRef.to_father_id = comment.id
			}
			this.$refs.starCommentReplyRef.to_user_id = comment.user_id
			this.$refs.starCommentReplyRef.placeholder = `回复:${comment.nickname}`
			this.$refs.starCommentReplyRef.focus = true
		},

结果展示:

热榜页面

该页面的功能主要根据算法,推断出热门的文章并展示。

部分代码展示:

js 复制代码
	// 拉取帖子列表
	async getPostList(page) {
		let vuex_user = this.vuex_user
		let res = await uniCloud.callFunction({
			name: 'star-community-post',
			data: {
				flag: 6,
				data: {
					match: {
						status: 1, // 0 审核中 1 正常 2 审核不通过 3 已删除 4 已违规
						school: this.tabCurrent === 0 ? vuex_user.school : undefined,
						createTime: {
							$gte: Date.now() - 3 * 24 * 60 * 60 * 1000
						}
					},
					addFields: {
						hot: {
							$divide: [{
								$sum: [{
										$multiply: ["$shareCount", 1000]
									},
									{
										$multiply: ["$viewCount", 10]
									},
									{
										$multiply: ["$commentCount", 1000]
									},
									{
										$multiply: ["$likeCount", 1000]
									},
									{
										$multiply: ["$recommendCount", 2000]
									}
								]
							}, 10]
						}
					},
					sort: {
						hot: -1,
						createTime: -1,
					},
					skip: (page.num - 1) * page.size,
					limit: page.size
				}
			}
		})
		return res.result.data
		// return mockPost.generateRandomPosts(size)
	},

结果展示:

用户主页

该页面就是传统的我的页面,可以查看当前账户发布的文章、浏览量、粉丝数等相关信息,并且支持自定义主页背景图。

部分代码展示:

js 复制代码
	// 下拉刷新
	async onPullDownRefresh() {
			this.user = await this.getUser(this.user.id)
			this.mescroll.resetUpScroll()
			uni.stopPullDownRefresh()
		},
	async onLoad(option) {
			console.log('option.id', option?.id);
			let vuex_user = this.vuex_user
			console.log('vuex_user.id', vuex_user.id);
			if (option?.id) {
				// 根据id判断 我的主页 还是 ta的主页
				let user_id = option.id
				if (user_id === vuex_user.id) {
					console.log('我的主页');
					this.user = vuex_user
				} else {
					console.log('ta的主页');
					this.user = await this.getUser(user_id)
					await this.getIsCare(user_id)
				}
			} else {
				console.log('我的主页');
				this.user = vuex_user
			}
		},
		async onShow() {
			if (this.user) {
				this.user = await this.getUser(this.user.id)
			}
		},

结果展示:

用户信息页

这里使用的是uniapp提供的uni-id用户体系,提供了用户注册、用户登录、用户退出、用户信息修改等一系列功能。

结果展示:

整个项目已经打包发上uniapp插件市场中,附上项目地址https://ext.dcloud.net.cn/plugin?id=15412,下载后开箱即用。

附上项目体验二维码:

相关推荐
web150850966412 小时前
在uniapp Vue3版本中如何解决webH5网页浏览器跨域的问题
前端·uni-app
计算机徐师兄10 小时前
基于TP5框架的家具购物小程序的设计与实现【附源码、文档】
小程序·php·家具购物小程序·家具购物微信小程序·家具购物
曲辒净11 小时前
微信小程序实现二维码海报保存分享功能
微信小程序·小程序
朽木成才12 小时前
小程序快速实现大模型聊天机器人
小程序·机器人
peachSoda712 小时前
随手记:小程序使用uni.createVideoContext视频无法触发播放
小程序
何极光12 小时前
uniapp小程序样式穿透
前端·小程序·uni-app
小墨&晓末13 小时前
【PythonGui实战】自动摇号小程序
python·算法·小程序·系统安全
User_undefined1 天前
uniapp Native.js 调用安卓arr原生service
android·javascript·uni-app
流氓也是种气质 _Cookie1 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
爱笑的眼睛111 天前
uniapp 极速上手鸿蒙开发
华为·uni-app·harmonyos