手寫乙個Hexo評論系統(二)

2022-05-09 06:39:07 字數 1407 閱讀 4934

上次總共列出了如下的一些需求,根據這些需求來構想一下如何設計:

3、支援文章評分,顯示評分人數和評分的平均分數

首先使用者要一開啟部落格就可以獲得隨機頭像和暱稱,並且要保持這個使用者的狀態,所以整體思路如下:

首先對於乙個從未開啟過某篇部落格的頁面的使用者來說,在瀏覽器端儲存的clientid肯定是沒有這個欄位的,直接可以判定為新使用者,所以去請求後台給乙個clientid,並且分配隨機的暱稱和頭像,把這個使用者資訊給落庫,即使使用者點選了重新整理暱稱和頭像,但是clientid並沒有變,使用者資訊就這樣得以儲存了下來。如果瀏覽器已經存在了clientid,那麼資料庫裡面也應該有對應的使用者資訊,所以就直接請求後台拿到使用者資料即可。

資料庫使用mysql 8.0。首先是設計客戶端資訊表,也就是代表了使用者資訊(主要包括了客戶端id、email、暱稱、建立時間、頭像、客戶端os等資訊,其他欄位等有需要再新增就ok):

點選此處直到後端**倉庫:

後端系統還是基於springboot搭建的後端服務,其實用的都是比較常見的技術,springmvc、springdatajpa等,平時用的比較少的就是郵件傳送服務,其實使用spring-boot-starter-mail來傳送郵件簡直不要太容易。需要注意的就是後端的跨域問題,需要配置乙個允許跨域的配置類,但是後面部署的時候推薦使用nginx同域部署,跨域問題也就不存在了,這是我目前最喜歡的方案。

前端專案打包後直接使用nginx部署一下,順便把https證書配置一下,這樣前端專案就可以https訪問了,那麼後端呢?不可能有這種url存在吧,所以還是通過nginx很輕鬆的解決了這個問題,只要通過nginx配置乙個**,100%搞定,而且徹底、一勞永逸地解決了跨域問題,並且共享網域名稱,還利用反向**隱藏了後端位址,比較方便集中管理。

所以我個人還是非常推薦採用nginx將前後端同域部署的,nginx真的幫了大忙!

server:

port: 8080

servlet:

context-path: /api

前端專案記得關閉history模式,然後請求的基礎url就寫成了:

axios.defaults.baseurl = ''
nginx的配置檔案如下:

手寫乙個Hexo評論系統(一)

1 訪問速度慢,畢竟那個時候github速度實在是太慢了,push 有時候都成問題,更別說載入個人主頁了。大部分情況下不等待個十來秒是無法全部載入的,不過自從微軟收購了github後情況貌似有所好轉。2 的問題的,由於我是直接把給放在同級資料夾底下的,所以hexo d的時候也必然要把給push到gi...

手寫乙個伺服器 二

上一節我們完成的服務起的目錄搭建,並寫了乙個簡單的服務,在這一節,將完成函式封裝,返回內容 每次我麼在寫玩 都需要重新啟動服務,簡直蠢的不要不要的,這裡我們使用supervisor supervisor 熱更新模組 安裝 npm install supervisor g supervisor 會自動...

手寫乙個二分查詢

二分查詢演算法思想 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。class erfenfa sor...