學習前端也有一段時間了
作個我的博客網站吧
正好總結練習一下這段時間的所學
文章很長,會拆成三篇來說前端
項目github地址:https://github.com/ssevenk/ss...node
後臺管理系統:
前端頁面:git
能夠看到,在整個項目中,沒有頁面的跳轉
只有先後端的數據交換,全部的頁面更新都是組件更新和數據更新
後端只對數據庫進行增刪查改,以及接受前端的異步請求返回數據
因此本質上這是一個單頁面應用
全部的重心所有放在前端github
文件目錄:mongodb
個人網站內容分紅了三個板塊數據庫
文章,雜談,收藏
這三種表結構是不同的
咱們要先對其進行定義express
我用的數據庫是mongodb
比較靈活,並且與node配合使用起來更爲簡潔npm
安裝配置mongodb
的過程這裏就再也不贅述
網上很容易搜到教程
若是安裝中卡住了,就在安裝時不要勾選左下角的compass
(可視化工具)
而後在項目中安裝mongodb
的第三方操做庫mongoose
json
npm i mongoose --save
新建curd.js文件
引入mongoose
並鏈接數據庫(第一次鏈接並無這個數據庫,會幫咱們自動建立)segmentfault
//curd.js const mongoose = require('mongoose') mongoose.connect('mongodb://localhost/gblog')
定義三種數據的結構
//curd.js const MonBlog = mongoose.model('monblog', { title: { type: String, required: true //表示這個屬性是必需的 }, content: { type: String, required: true }, date: { type: String, required: true }, comments:[] }) const MonEssay = mongoose.model('monessay', { title: { type: String, required: true }, content: { type: String, required: true }, date: { type: String, required: true }, comments:[] }) const MonArticle = mongoose.model('monarticle', { title: { type: String, required: true }, link: { type: String, required: true }, date: { type: String, required: true } })
在新增數據的時候,mongodb
會自動爲每個數據生成一個_id
之後就能夠經過這個獨一無二的_id
來查找操做數據
而後將這三種數據模型導出給sever
端使用
//curd.js module.exports = { MonBlog: MonBlog, MonEssay: MonEssay, MonArticle: MonArticle }
使用Node
來搭建咱們的服務器
安裝express
框架,添加body-parser
中間件,用來對傳入的請求體進行解析
將路由寫在另外一個模塊router.js
中,並引入
//app.js const express=require('express') const bodyParser=require('body-parser') const router=require('./router') const app=express() app.use(bodyParser.urlencoded({extended:false})) app.use(bodyParser.json()) app.use('/',router)
監聽7000端口
app.listen(7000)
這裏可能大家也注意到了server
端監聽的是7000
端口
可是前臺頁面其實在8080
端口訪問
爲了實現跨域請求
咱們須要對config
文件夾中的index.js
文件進行一些修改
給proxyTable
添加一種跨域訪問規則
這樣,在8080
端口的前端以/data
開頭的請求均可以跨域訪問到在7000
端口的sever
了
配置路由模塊,並引入curd.js
導出的三種數據模型
//router.js const express = require('express') const curd = require('./curd') var router = express.Router() const MonBlog = curd.MonBlog const MonEssay = curd.MonEssay const MonArticle = curd.MonArticle
而後咱們就能夠運用mongoose
提供的API
來進行增刪查改了
好比咱們經過前端post的信息,來新增數據
router.post('/data/blog/new', (req, res) => { new MonBlog(req.body).save((err) => { if (err) res.send(err) }) })
把全部的文章數據送給前端
router.get('/data/blog', function (req, res) { MonBlog.find((err, data) => { if (err) { res.send(err) return } res.send(data) }) })
想要經過接收到前端送過來的信息,(用body-parser
解析)來修改對應的數據
router.post('/data/blog/:id',(req, res) => { MonBlog.findByIdAndUpdate(req.body.id, { title: req.body.title, content: req.body.content, comments:req.body.comments }, function (err, data) { if (err) res.send(err) }) })
刪除數據
router.delete('/data/essay/:id',(req, res) => { MonEssay.findByIdAndDelete(req.params.id, function (err, data) { if (err) res.send(err) }) }))
至此咱們便完成了項目中的這一塊部分
以後咱們便要開始前端部分的製做了
這個我打算分紅兩塊來說
後臺管理系統和前臺頁面
敬請期待接下來的文章
已更新第二篇:https://segmentfault.com/a/11...
已更新第三篇:https://segmentfault.com/a/11...