Vue + Node + Mongodb 开发一个完整博客流程
时间:2022-05-06
本文章向大家介绍Vue + Node + Mongodb 开发一个完整博客流程,主要内容包括前言、技术栈、目录结构讲解、build 文件讲解、code 文件、其他文件、后台管理、前台、通过 koa-static 管理静态文件入口、注意事项:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
前言
前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统。
服务端用的是 koa2框架 进行开发。
技术栈
Vue + vuex + element-ui + webpack + nodeJs + koa2 + mongodb
目录结构讲解
说明:
- build - webpack的配置文件
- code - 放置代码文件
- config - 项目参数配置的文件
- logs - 日志打印文件
- node_modules - 项目依赖模块
- public - 项目静态文件的入口 例如: public下的 demo.html文件, 可通过 localhost:3000/demo.html 访问
- static - 静态资源文件
- .babelrc - babel编译
- postcss.config.js - css后处理器配置
build 文件讲解
说明:
- build.js - 执行webpack编译任务, 还有打包动画 等等
- get-less-variables.js - 解析less文件, 赋值less全局变量
- style-loader.js - 样式loader配置
- vue-config.js - vue配置
- webpack.base.conf.js - webpack 基本通用配置
- webpack.dev.conf.js - webpack 开发环境配置
- webpack.prod.conf.js - webpack 生产环境配置
code 文件
1.admin - 后台管理界面源码
src - 代码区域:
- components - 组件
- filters - 过滤器
- font - 字体/字体图标
- images - 图片
- router - 路由
- store - vuex状态管理
- styles - 样式表
- utils - 请求封装
- views - 页面模块
- App.vue - app组件
- custom-components.js - 自定义组件导出
- main.js - 入口JS
- index.html - webpack 模板文件
2.client - web端界面源码
跟后台管理界面的结构基本一样。
3.server - 服务端源码
说明:
- controller: 所有接口逻辑代码
- middleware: 所有的中间件
- models: 数据库model
- router: 路由/接口
- app.js: 入口
- config.js: 配置文件
- index.js: babel编译
- mongodb.js: mongodb配置
其他文件
- config - 项目参数配置的文件
- logs - 日志文件
- public - 项目静态文件的入口
- static - 静态资源文件
- .babelrc - babel编译
- postcss.config.js - css后处理器配置
后台管理
开发中用的一些依赖模块
- vue/vue-router/vuex - Vue全家桶
- axios - 一个现在主流并且很好用的请求库 支持Promise
- qs - 用于解决axios POST请求参数的问题
- element-ui - 饿了么出品的vue2.0 pc UI框架
- babel-polyfill - 用于实现浏览器不支持原生功能的代码
- highlight.js / marked- 两者搭配实现Markdown的常用语法
- js-md5 - 用于登陆时加密
- nprogress - 顶部加载条
components
这个文件夹一般放入常用的组件, 比如 Loading组件等等。
views
所有模块页面。
store
vuex 用来统一管理公用属性, 和统一管理接口。
前台
前台用vue+webpack搭建,基本的结构都差不多,具体代码实现的可以直接在github下载便行。
通过 mongoose 链接 mongodb
-
import mongoose from
'mongoose'
-
import conf from
'./config'
-
// const DB_URL = `mongodb://${conf.mongodb.address}/${conf.mongodb.db}`
-
const DB_URL = `mongodb://${conf.mongodb.username}:${conf.mongodb.pwd}@${conf.mongodb.address}/${conf.mongodb.db}`; // 账号登陆
mongoose.Promise = global.Promise
mongoose.connect(DB_URL, { useMongoClient: true }, err => {
-
if (err) {
console.log("数据库连接失败!")
}else{
console.log("数据库连接成功!")
}
})
-
export
default mongoose
封装返回的send函数
-
export
default () => {
-
let render = ctx => {
-
return (json, msg) => {
ctx.set("Content-Type", "application/json");
ctx.body = JSON.stringify({
code: 1,
data: json || {},
msg: msg || 'success'
});
}
}
-
let renderError = ctx => {
-
return msg => {
ctx.set("Content-Type", "application/json");
ctx.body = JSON.stringify({
code: 0,
data: {},
msg: msg.toString()
});
}
}
-
return
async (ctx, next) => {
ctx.send = render(ctx);
ctx.sendError = renderError(ctx);
-
await
next()
}
}
通过 koa-static 管理静态文件入口
注意事项:
1. cnpm run server
启动服务器
2.启动时,记得启动mongodb数据库,账号密码 可以在 server/config.js 文件下进行配置
3. db.createUser({user:"cd",pwd:"123456",roles:[{role:"readWrite",db:'test'}]})
(mongodb 注册用户)
4. cnpm run dev:admin
启动后台管理界面
5.登录后台管理界面录制数据
6.登录后台管理时需要在数据库 创建 users 集合注册一个账号进行登录
db.users.insert({
-
"name" : "cd",
-
"pwd" : "e10adc3949ba59abbe56e057f20f883e",
-
"username" : "admin",
-
"roles" : [
-
"admin"
]
})
-
// 账号: admin 密码: 123456
7. cnpm run dev:client
启动前台页面
想撸的直接上手跟我来,
项目地址:https://github.com/cd-dongzi/vue-node-blog
∞∞∞∞∞
- 基于OpenDaylight和OVSDB搭建VxLAN网络
- 史上最强----机器学习经典总结---入门必读
- SDNLAB群分享(四):利用ODL下发流表创建VxLAN网络
- Neutron集成ONOS源码分析
- “访问限制”&“代理访问”实验
- OpenDaylight Lithium-SR2 Cluster集群搭建
- Linux | CentOS7下会玩JDK不?你确定?
- Linux | 不懂Linux的码神,不是真正的菜鸟
- 初体验Spring Boot 2支持的HikariCP连接池
- 快来了解JDK10中引入的全新JIT编译器:Graal
- 基于Ryu打造自定义控制器
- Junit 5新特性全集
- 深入了解浏览器的重绘与重排
- 自己动手写区块链(Java版)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 4-4 R语言函数 tapply
- 4-5 R语言函数 split
- 4-6 R语言函数 排序
- 4-7 总结数据信息
- Linux系统——zabbix监控软件安装布署
- 1.4 Installation and Setup(安装和设置)
- Linux系统VIM编辑器常用操作介绍
- 1.6 Navigating This Book(本书导航)
- 2.1 The Python Interpreter(python解释器)
- Linux系统—Centos7安装教程
- 2.2 IPython基础
- Linux系统crond、rsync、打包备份数据操作实战
- 2.3 Python语言基础
- 开发需求
- Linux系统组建SVN服务器