banner
cos

cos

愿热情永存,愿热爱不灭,愿生活无憾
github
tg_channel
bilibili

Campus SNS 校園社區後端接口開發(附前端地址)

使用 koa2 + Sequelize 搭建的校園社區後端,巧婦難為無米之炊!一個厲害的項目的後端!

前言及項目介紹#

這個項目是我剛學前端時參加的百度前端訓練營進階班的第一題,具備完善的校園社區功能及一個後台管理系統,于今年 3 月份開發,我負責的主要是後端的發帖管理、分區管理等地方的接口,在接口文檔中就可以看到。當時團隊裡總共 6 人,3 人參與開發後端,2 人開發移動端前端,1 人開發 PC 端,並且由於還年輕,寫了挺多文檔記錄。

個人感覺這個接口系統麻雀雖小五臟俱全(某後端爺評價),既有兩個前端(PC 端的後台管理系統和手機端的校園社區),又有後端完善的接口,倒挺適合新人初學,也確實有過學弟學妹來問我我問題,故打算完善一下寫篇博客總結一下。

後端項目一直運行在自己的雲伺服器上,可請求 http://cosine.ren:8000 嘗試(輕點打,求求了,雖然有備份),哪天要是掛了我也不好說,建議大家本地運行前後端嘗試~

個人認為優點

  • 文檔很齊全(接口文檔、開發文檔、bug 記錄...),這在以後的我看來也是很有用的事,實習之後就不怎麼寫文檔了
  • 基本的增刪改查加上統計都有涉及到,接口規範遵循 Restful (老實說,當時不知道 restful 的概念但是自然而然的就用到了)
  • 主要參數基本都有中間件進行校驗,權限控制等,代碼裡的註釋特別多
  • 錯誤碼有專門的說明,接口函數都有註釋(實習之後愈發覺得這真的是太棒了...)

缺點問題也很明顯

  • 分支管理壓根沒有(當時還不熟悉,加上大家開發的都是不同功能,直接在 master 分支開發並解決衝突)
  • 很多功能實現簡單,畢竟工期也就快一個月
  • 當時剛學,也沒有用 prettier 這類代碼格式化工具,也沒上 ts,現在的新項目基本會使用 ts

在線地址及項目演示#

上來先放源碼地址,當時是在 gitee 進行開發,後來我將後端同步到了 github

如果覺得不錯的話,就 star 一個吧~也歡迎提 issue 和 pr

後端接口#

image.png

image.png

image.png

image.png

前端(PC 端後台管理系統)#

image.png

image.png

image.png

image.png

image.png

image.png

image.png

前端(移動端)#

演示
image.pngimage.png
image.pngimage.png
image.pngimage.png

開發文檔#

開發記錄文檔 記錄了從 0 到 1 的搭建記錄,非常詳細的~

bug 回憶錄 顧名思義,搭建過程中的問題記錄

接口功能說明#

  • 功能實現
    • 數據統計
      • 獲取社區十大熱帖
      • 獲取社區十大紅人
      • 近 7 日文章增長量等統計
    • 用戶管理 user
      • 上傳頭像
      • 修改用戶信息
    • 文章管理 article
      • 添加文章
      • 刪除 / 屏蔽文章
      • 獲取文章總數
      • 恢復被刪除 / 屏蔽文章
    • 評論管理 comment
      • 回覆文章
      • 回覆評論
    • 分區管理 partition
      • 添加分區
      • 刪除分區
      • 自定義分區圖標
    • 系統管理
      • 在線用戶
      • 操作日誌
    • 用戶的註冊及登錄
      • 用戶信息修改等
    • 普通用戶功能
      • 發帖 (新發布帖子待管理員審核通過後方可發布)
      • 編輯
      • 刪除自己的帖子
    • 管理員功能
      • 帖子修改、刪除功能
      • 屏蔽、恢復功能
      • 帖子審核功能
    • 可選功能
      • 支持模糊搜索、搜索關鍵字聯想
      • 支持點讚
      • 支持收藏
      • 支持發圖片

目錄結構#

基本上見名知義

  • src
    • app
      • errHandler.js錯誤統一處理函數
      • index.js進行 app 的實例化
    • config
      • config.default.js 系統的默認配置文件,用 dotenv 讀取.env中的配置並暴露出來
    • constant
      • err.type.js 錯誤類型的匯總 (常量)
    • controller 所有的業務邏輯
      • article.controller.js 文章相關的業務邏輯
      • user.controller.js 所有用戶相關的業務邏輯
      • ……
    • db
      • seq.js 連接數據庫的控制文件 (通過.env中默認配置連接本地數據庫)
    • middleware 所有的中間件
      • article.middleware.js 文章相關的中間件
      • auth.middleware.js 解析 token 的中間件
      • user.middleware.js 用戶相關的中間件
      • ……
    • model
      • article.model.js 文章信息的數據表文件
      • user.model.js 用戶信息的數據表文件
      • ……
    • public 靜態資源的存儲
      • assets 存放圖片等資源文件
      • css 存放css文件
      • uploads 上傳的圖片存放地
    • routers
      • article.route.js 文章相關的路由註冊
      • user.route.js 用戶相關的路由註冊
      • index.js 統一註冊路由
      • ……
    • service
      • article.service.js 文章相關的數據庫操作
      • user.service.js 用戶相關的數據庫操作
      • ……
    • views 存儲一些路由的模板
      • index.html 主路由的 html 模板
  • logs
    • err.log 存放錯誤日誌
    • out.log 存放輸出日誌
    • seq.log 存放查詢日誌
  • main.js 導入封裝的 app 並在.env中指定的端口號進行監聽
  • .env 存儲配置信息
  • .gitignore git 提交默認忽略node_modules(下載的依賴文件)
  • package.json npm 的插件版本號等
  • 一些文檔

運行方式(後端)#

# clone 項目
git clone https://github.com/yusixian/campus-community-backend.git
# cd到項目目錄
# 下載所需依賴
npm install

數據庫的相關配置#

  • 1. 在本地打開數據庫 (一般都是默認打開的 mysql) 如果沒有打開使用 cmd 命令net start mysql
  • 2. 登錄數據庫後建立一個數據庫,比如名字叫schoolcommunity,當然你也可以用navicat等來創建
  • 3. 在本項目的 .env 文件中更新 mysql 的相關配置
  • 4. 使用命令npm run createModel來創建所有的數據表

本地運行#

創建完數據庫後

npm install
npm run dev

開發心得#

作為一名前端人,這次後端接口的開發一是有了能獨立編寫自己的輕量接口的能力,二是也知道了跟後端溝通時應注意哪些細節問題,大家都不容易,三是寫接口文檔確實費時費力,有時候還會吃力不太好寫了忘記改,所以能夠擁有相當完善的接口文檔說明你的後端人特好。在今後開發的時候,最好也先按這種思路跟後端對齊一下,再進行開發,很多時候能節省不少功夫。

引用心圓佬引用阿里前端練習生計劃開營儀式中梓騫老師說的一段話來收個尾:

  • 他們也許不懂交互設計 但是沒人比他們懂交互設計的實現以及每一個細節

  • 他們也許不懂視覺設計 但是沒人比他們懂視覺設計如何變為現實

  • 他們也許不懂數據庫 但是他們其實才是數據的第一消費者

  • 他們也許不是產品經理 但是產品的體驗幾乎都是由他們來決定

好吧,我純粹就是喜歡這段話

我期望著盡可能做到多少都懂一些,努力做一個合格的前端人。

下次發文,應該就是開始做做 ts 類型體操了。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。