Node.js完整實現(xiàn)博客系統(tǒng)詳解
一、項目功能說明
- 登錄、注冊
- 新建博客
- 首頁顯示全部博客
- 查看博客詳情頁
- 查看博客評論區(qū)
- 修改、刪除博客
二、最終效果
首頁:
登錄、注冊:
詳情頁:
評論區(qū):
新建博客:
登陸后的Banner:
用戶設(shè)置->基本信息:
用戶設(shè)置->賬戶設(shè)置:
三、文件目錄結(jié)構(gòu)說明
- modules:包含需要建多個的Schema
- public:包含公共的Css、Js、Image
- views:按照不同功能、板塊創(chuàng)建文件夾,并在對應(yīng)文件夾下創(chuàng)建html文件
- app.js:配置解析表單POST請求體數(shù)據(jù)、存取數(shù)據(jù)狀態(tài)、使用模板引擎、掛載路由
- router.js:路由配置
四、項目技術(shù)棧
- express 框架
- bootstrap 作為UI框架
- mongodb 數(shù)據(jù)庫
- art-template 模板引擎
- jquery + ajax 發(fā)送網(wǎng)絡(luò)請求
- 使用 express-session 存取數(shù)據(jù)狀態(tài),通過req.session來訪問和設(shè)置session成員
- mongoose 使用了一種直接的、基于scheme結(jié)構(gòu)的方式定義數(shù)據(jù)模型
五、核心技術(shù)
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})
導(dǎo)出 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.使用 // 當(dāng)把這個插件配置好之后,我們就可以通過req.session來訪問和設(shè)置session成員了 // 添加session數(shù)據(jù):req.session.foo = 'bar // 訪問session數(shù)據(jù):req.session.foo var session = require('express-session') app.use(session({ // 配置加密字符串,他會在原有加密基礎(chǔ)上和這個字符串拼起來去加密 // 目的是為了增加安全性,防止客戶端惡意偽造 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>鏈接是同步請求,所以可以服務(wù)端重定向 req.session.user = null res.redirect('/')
5. 掛載路由
創(chuàng)建路由:var router = express.Router()
,并在路由上通過router.get()、router.post()方法添加請求,最后導(dǎo)出 router
6. 使用md5對密碼進行加密
通過md5對密碼加密,這樣數(shù)據(jù)庫也無法讀取到正確的密碼
六、遇到的問題
- 沒有很好的對時間進行格式化
- 未實現(xiàn)搜索文章功能
七、github鏈接
到此這篇關(guān)于Node.js完整實現(xiàn)博客系統(tǒng)詳解的文章就介紹到這了,更多相關(guān)Node.js博客系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js中實現(xiàn)同步操作的3種實現(xiàn)方法
這篇文章主要介紹了node.js中實現(xiàn)同步操作的3種實現(xiàn)方法,本文用實例講解一些需要同步操作的情況下,如何編程實現(xiàn),需要的朋友可以參考下2014-12-12node.js中的fs.readlinkSync方法使用說明
這篇文章主要介紹了node.js中的fs.readlinkSync方法使用說明,本文介紹了fs.readlinkSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12Node.js的項目構(gòu)建工具Grunt的安裝與配置教程
Grunt是為Node打造的項目構(gòu)建工具,相當(dāng)于C/C++世界中的makefile,可以執(zhí)行像壓縮、編譯、單元測試、代碼檢查以及打包發(fā)布的任務(wù),下面我們就來一起看一下Node.js的項目構(gòu)建工具Grunt的安裝與配置教程:2016-05-05Nodejs實現(xiàn)多人同時在線移動鼠標的小游戲分享
這篇文章主要介紹了Nodejs實現(xiàn)多人同時在線移動鼠標的小游戲分享,本文給出了服務(wù)器端和客戶端代碼以及運行方法,需要的朋友可以參考下2014-12-12node.js express中app.param的用法詳解
express.js是nodejs的一個MVC開發(fā)框架,并且支持jade等多種模板。下面這篇文章主要給大家介紹了關(guān)于node.js express中app.param用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07node.js中的path.isAbsolute方法使用說明
這篇文章主要介紹了node.js中的path.isAbsolute方法使用說明,本文介紹了path.isAbsolute的方法說明、語法、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12nodejs使用express獲取get和post傳值及session驗證的方法
這篇文章主要介紹了nodejs使用express獲取get和post傳值及session驗證的方法,結(jié)合實例形式分析了nodejs使用express實現(xiàn)獲取get和post傳值及session驗證功能的具體操作步驟與注意事項,需要的朋友可以參考下2017-11-11