vue--node-mongodb-wzry是一個移動端的仿王者榮耀手機端官網和後臺管理系統的全棧開源項目,基於 vue + node (Express + ElementUI) +mongodb實現。本項目使用了最新的Vue全家桶技術棧,後臺數據經過node+mongodb搭建。前端
源碼地址:github.com/JakeZhangZJ…vue
學習地址:B站-全棧之巔node
ps:如需數據庫文件,可留言git
git clone git@github.com:JakeZhangZJK/vue--node-mongodb-wzry.git
複製代碼
cd vue-node-mongodb-wzry
複製代碼
npm install
複製代碼
npm run serve
複製代碼
npm run serve
複製代碼
npm run serve
複製代碼
npm run build
複製代碼
分別在admin和web目錄下運行上面的命令,打包後的靜態文件分別存放於server目錄下的admin和web文件夾下,github
ps:全部增刪改查均使用通用 CRUD 接口;經過中間件匹配前端傳過來路由進行相應的增刪改查web
路由匹配中間件mongodb
module.exports = () => {
return async (req, res, next) => { // 模型匹配中間件 // 「resource」爲動態參數,用來匹配相應資源
const modelName = require('inflection').classify(req.params.resource) // 請求動態資源 這裏須要安裝一個inflection依賴包,用於類名轉換
req.Model = require(`../models/${modelName}`)
next()
}
}
複製代碼
// 引入資源匹配中間件
const resourceMiddleWare = require('../../middleware/resource.js')
// 通用新增接口
router.post('/', async (req, res) => {
const model = await req.Model.create(req.body)
res.send(model)
})
// 通用修改接口
router.put('/:id', async (req, res) => {
const model = await req.Model.findByIdAndUpdate(req.params.id, req.body)
res.send(model)
})
// 通用刪除接口
router.delete('/:id', async (req, res) => {
await req.Model.findByIdAndDelete(req.params.id)
res.send({
success: true
})
})
// 通用獲取列表接口
router.get('/', async (req, res) => {
const queryOptions = {}
let pageNum = req.query.pageNum;
let pageSize = req.query.pageSize;
let count = await req.Model.find().count() // 總條數
let items = ''
let obj = ''
// 爲了通用性,這裏不單獨寫Category的接口,由於Category要特殊獲取上級分類,
// 因此這裏將它設置爲動態參數傳進去,之後相似的特殊請求均可以這樣處理
if (req.Model.modelName === 'Category' || req.Model.modelName === 'Model') {
queryOptions.populate = 'parent'
}
if (pageNum) {
items = await req.Model.find()
.setOptions(queryOptions)
.skip(parseInt(pageSize) * parseInt(pageNum - 1))
.limit(parseInt(pageSize));
obj = {
count,
items
}
} else {
obj = await req.Model.find().setOptions(queryOptions).limit(count)
}
res.send(obj)
})
// 通用獲取一條數據接口
router.get('/:id', async (req, res) => {
const model = await req.Model.findById(req.params.id)
res.send(model)
})
複製代碼
首頁數據庫
攻略中心npm
賽事中心json
記得star哦~😁
本項目爲仿作項目,僅作練手和學習使用,非官方App,禁止用於商業目的,產生的一切侵權著做法律後果,與本做者無關。
Copyright (c) 2020 Jake Zhang