# 校园需求圈 **Repository Path**: mengzhilang/campus_demand_circle ## Basic Information - **Project Name**: 校园需求圈 - **Description**: 创建一个用于促进高校校园内学生互帮互助的微信小程序 - **Primary Language**: 微信 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 1 - **Created**: 2019-04-19 - **Last Updated**: 2024-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园需求圈 #### 项目介绍 创建一个用于促进高校校园内学生专业知识问答、技能互换、运动社交社区的微信小程序(因为本人是个学生不方便提供企业主体的相关资质证明,淘宝上花钱过审想想又不值,所以一直没办法上线正常供大家使用,就算是自己学习了微信小程序开发,为开源社区做贡献吧。每一行代码都是自己一个人写的,自己也从来没有写过这么多代码,不能上线使用还是满心疼的) #### 技术支撑 没有用自己的服务器,完全依赖于官方提供的云开发技术和node.js环境,要拿去用的时候记得把collection的名称、环境ID、appid、secret等变量改一下。 #### 产品功能展示 ![首页](https://images.gitee.com/uploads/images/2019/0926/233138_fabf70eb_1648217.png "屏幕截图.png") 首页按照发布时间对信息进行排序,但要注意想要发布任何消息,都要先让用户授权获取个人信息,否则就相当于游客只能看不能发布。 ![详情页](https://images.gitee.com/uploads/images/2019/0926/233416_e461b996_1648217.png "屏幕截图.png") 详情页可统计页面浏览量,发评论、再发子级评论,对评论点赞。同时也可以一键分享或举报该条消息(通过邮件来收到)。点击头像还可以进入个人中心页面.为了减少对云函数资源的使用以及数据库请求次数,所以由onunload事件(也就是离开页面的时候)执行对数据库的读写 ![个人主页](https://images.gitee.com/uploads/images/2019/0926/233907_aa45dda2_1648217.png "屏幕截图.png") 为了具备社交属性而开发的页面,用户可以去“我的”页面里自行修改。 ![发布消息页](https://images.gitee.com/uploads/images/2019/0926/234247_9a3c65cf_1648217.png "屏幕截图.png") 发布消息页,可以检测用户当天发布了多少条消息并且调用了api来审核内容是否违规。要获取了用户的个人信息才能让他发布消息,不授权就不能发消息。开发该页面比较难的是,完整且快速的上传本地图片。用户删除图片数据库那边也要同时执行删除操作,减少不必要的数据存储。 ![消息提示页](https://images.gitee.com/uploads/images/2019/0926/234752_d93cf790_1648217.png "屏幕截图.png") 父级评论的消息提示还较容易(因为数据层级交高),子级评论的数据都嵌套在数据库的comment字段里,比较难对其进行索引。正常且实时地显示与消失红点(只能在相关tabbar页的操作才能从触发reddot事件)也是个难点。 ![我页](https://images.gitee.com/uploads/images/2019/0926/235231_73ca4826_1648217.png "屏幕截图.png") (真正要做起来,页面还是挺多的) #### 小程序开发启示录 1. 最初准备要开发小程序的时候,要注意产品提供的服务与功能是否符合账号类型所对应开放的服务类目,否则就像我这样,代码都写好,因为社交类小程序需要互联网非经营性备案,没有相关材料官方就是不给过。 2. 做好代码版本管理。不仅可以见证产品迭代与进步,而且改错代码还有得回顾,也不要指望一次性做好再git,每增加一个功能就git一次,多多git是有利的。 3. 根据用户实际需求来开发产品功能,以用户为中心,理清楚业务逻辑(由什么来触发事件,变量如何输入输出等)再写代码。 4. 测试产品功能时要清缓存,清除了所有缓存后才能真正看出有没有bug。而且不要一直在PC端预览效果,要以手机端为准(真机调试、手机预览),两者有时还是会有蛮大的差别的 5. 有问题先回顾帮助文档,再去官方提供的开发者社区去提问,问题解决的效率还蛮高的。 6. 一开始要组织好文件存储结构(按时间来生成文件夹),否则到后期会很难访问处理海量文件