Node.js完整實現(xiàn)博客系統(tǒng)詳解
一、項目功能說明
- 登錄、注冊
- 新建博客
- 首頁顯示全部博客
- 查看博客詳情頁
- 查看博客評論區(qū)
- 修改、刪除博客
二、最終效果
首頁:

登錄、注冊:


詳情頁:

評論區(qū):

新建博客:

登陸后的Banner:

用戶設置->基本信息:

用戶設置->賬戶設置:

三、文件目錄結構說明

- modules:包含需要建多個的Schema
- public:包含公共的Css、Js、Image
- views:按照不同功能、板塊創(chuàng)建文件夾,并在對應文件夾下創(chuàng)建html文件
- app.js:配置解析表單POST請求體數(shù)據(jù)、存取數(shù)據(jù)狀態(tài)、使用模板引擎、掛載路由
- router.js:路由配置
四、項目技術棧
- express 框架
- bootstrap 作為UI框架
- mongodb 數(shù)據(jù)庫
- art-template 模板引擎
- jquery + ajax 發(fā)送網絡請求
- 使用 express-session 存取數(shù)據(jù)狀態(tài),通過req.session來訪問和設置session成員
- mongoose 使用了一種直接的、基于scheme結構的方式定義數(shù)據(jù)模型
五、核心技術
1. 使用Schema定義數(shù)據(jù)模型
例如:定義評論的 Schema模型
var commentSchema = new Schema({
articleId:{
type:String,
required:true
},
nickname:{
type:String,
required:true
},
comments:{
type:String,
required:true
},
created_time:{
type:Date,
default:Date.now
}
})2. mongoose 的操作
連接mongodb數(shù)據(jù)庫:mongoose.connect('mongodb://localhost/user',{ useNewUrlParser: true ,useUnifiedTopology: true})
導出 Schema模型:module.exports = mongoose.model('Comment',commentSchema)
3. mogodb數(shù)據(jù)庫的操作
查找:Topic.find(function(err,topics){ ... })
查找一個:User.findOne({ },function(err,data){})
保存信息:Topic(req.body).save(function(err,data){})
查找一個并更新:User.findOneAndUpdate({查找條件},{要修改的信息},function(err,data){})
刪除:User.remove({查找條件},function(err,data){})
4. 使用第三方插件 express-session:存取數(shù)據(jù)狀態(tài)
session 的配置
// 使用第三方插件 express-session:存取數(shù)據(jù)狀態(tài)
// 1.npm install express-session
// 2.配置,一定要在路由之前
// 3.使用
// 當把這個插件配置好之后,我們就可以通過req.session來訪問和設置session成員了
// 添加session數(shù)據(jù):req.session.foo = 'bar
// 訪問session數(shù)據(jù):req.session.foo
var session = require('express-session')
app.use(session({
// 配置加密字符串,他會在原有加密基礎上和這個字符串拼起來去加密
// 目的是為了增加安全性,防止客戶端惡意偽造
secret: 'itcast',
resave: false,
saveUninitialized: false
}))
通過session 讀取狀態(tài):
// 用戶存在,登錄成功,記錄登錄狀態(tài)
req.session.user = user
res.status(200).json({
err_code:0,
message:'OK'
})
清除 session:
// 清楚登錄狀態(tài)
// 重定向到登錄頁,<a>鏈接是同步請求,所以可以服務端重定向
req.session.user = null
res.redirect('/')
5. 掛載路由
創(chuàng)建路由:var router = express.Router(),并在路由上通過router.get()、router.post()方法添加請求,最后導出 router
6. 使用md5對密碼進行加密
通過md5對密碼加密,這樣數(shù)據(jù)庫也無法讀取到正確的密碼
六、遇到的問題
- 沒有很好的對時間進行格式化
- 未實現(xiàn)搜索文章功能
七、github鏈接
到此這篇關于Node.js完整實現(xiàn)博客系統(tǒng)詳解的文章就介紹到這了,更多相關Node.js博客系統(tǒng)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nodejs使用fs-extra模塊進行目錄和文件操作用法示例
fs-extra模塊是基于fs?的文件操作相關工具庫,封裝了一些fs實現(xiàn)起來相對復雜的工具,下面這篇文章主要給大家介紹了關于Nodejs使用fs-extra模塊進行目錄和文件操作用法的相關資料,需要的朋友可以參考下2024-06-06
基于Node-red的在線評語系統(tǒng)(可視化編程,公網訪問)
Node-Red是IBM公司開發(fā)的一個可視化的編程工具,在網頁內編程,主要是拖拽控件,代碼量很小,這篇文章主要介紹了基于Node-red的在線評語系統(tǒng)(可視化編程,公網訪問),需要的朋友可以參考下2022-01-01
如何解決安裝websocket還是報錯Cannot find module'ws&apos
這篇文章主要介紹了如何解決安裝websocket還是報Cannot find module'ws'問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

