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