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

登錄、注冊(cè):


詳情頁(yè):

評(píng)論區(qū):

新建博客:

登陸后的Banner:

用戶(hù)設(shè)置->基本信息:

用戶(hù)設(shè)置->賬戶(hù)設(shè)置:

三、文件目錄結(jié)構(gòu)說(shuō)明

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

