项目准备
本次博客是基于express框架来实现的,主要功能包括查看文章,评论以及后台管理的发布博客,评论审核等功能。首先必须得有node,可以自行去官网下载,无脑下一步即可,而且要有mongodb的数据库才行,推荐下载社区版,菜鸟教程就有教怎么安装,然后安装相应的脚手架,可以自行安装,也可以手动安装
这里我才用的是直接干撸几个相关的配置,直接npm 即可
项目思路
这里我们要思考下怎么布局,以及数据为什么。
首先博客得有文章,而且得有相应的评论,这里我们初始化俩个数据库集合。这里如果有不了解mongodb数据库的建议先学习下数据库操作
其次是我们要有俩个大功能,一个是查看文章以及评论文章,一个是后台管理
查看文章又得分为查看多个列表,以及文章详情部分,后台管理又分为登录以及管理模块,所以我们大致分为4个页面来实现此博客系统。
实现功能
接下来就是我们的代码实现了,这里我才用的是ejs渲染模板,和vue的v-for有些类似比较容易操作渲染页面。直接采用bootstrap来弄现成的结构,毕竟🐀🐀是cv工程师,然后就是初始化我们的express了,这里我都写上了注释,由于我们采用的是ejs来渲染页面,这里把index改为false不直接访问我们的index.html
// 引入express模块
const express = require('express')
// 初始化express模块的app
const app = express()
// 引入body-parser模块
const bodyParser = require('body-parser')
// 初始化urlencoded解析器
const urlencodedParser = bodyParser.urlencoded({
extended: false
})
// 引入cookie-parser模块
const cookieParser = require('cookie-parser')
// 为请求添加中间件:解析cookie
app.use(cookieParser())
// 处理静态文件请求
app.use(express.static('./static', {
index: false
}))
封装mongodb的增删改查
要是每次调用数据库都得重写那可太浪费了,所以我们封装一下
直接上代码让大家引入,这个是我当时以菜鸟教程的方法封装的,npm i mongodb,然后再导出他。
// es6封装
const mongodb = require('mongodb')
const MongoClient = mongodb.MongoClient
const ObjectId = mongodb.ObjectId
var url = "mongodb://localhost:27017"
class mongoControl{
constructor(dbName,collectionName){
this.dbName=dbName
this.collectionName=collectionName
}
find(whereStr,callback){
MongoClient.connect(url,(error,db)=>{
if(error){
callback(error)
return
}
var dbo=db.db(this.dbName)
dbo.collection(this.collectionName).find(whereStr).toArray((err,result)=>{
callback(err,result)
db.close()
})
})
}
insert(docs,callback){
MongoClient.connect(url,(error,db)=>{
if(error) throw error
var dbo=db.db(this.dbName)
dbo.collection(this.collectionName).insertMany(docs,(error,result)=>{
callback(error,result)
db.close()
})
})
}
update(whereStr,newData,callback){
MongoClient.connect(url,(error,db)=>{
if(error) throw error
var dbo=db.