vue+node+mongodb 搭建一个完整博客

Vue + Node + Mongodb 开发一个完整博客流程

前言

前段时间刚把自己的个人网站写完, 于是这段时间因为事情不是太多,便整理了一下,写了个简易版的博客系统
服务端用的是 koa2框架 进行开发

技术栈

Vue + vuex + element-ui + webpack + nodeJs + koa2 + mongodb


目录结构讲解

1626350395-5a6ddca11af93_articlex

  • build – webpack的配置文件
  • code – 放置代码文件
  • config – 项目参数配置的文件
  • logs – 日志打印文件
  • node_modules – 项目依赖模块
  • public – 项目静态文件的入口 例如: public下的 demo.html文件, 可通过 localhost:3000/demo.html 访问
  • static – 静态资源文件
  • .babelrc – babel编译
  • postcss.config.js – css后处理器配置

build 文件讲解

2442258677-5a6ddca0e523b_articlex

  • 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 文件

3024244912-5a6ddc9f73a39_articlex

1.admin – 后台管理界面源码
1781552054-5a6ddca2297cb_articlex

2.client – web端界面源码

3.server – 服务端源码
4174329546-5a6ddca172ad6_articlex

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用来统一管理公用属性, 和统一管理接口

1. 登陆

登陆是采用 jsonwebtoken方案 来实现整个流程的

  • jwt.sign(payload, secretOrPrivateKey, [options, callback]) 生成TOKEN
  • jwt.verify(token,secretOrPublicKey,[options,callback]) 验证TOKEN
  • 获取用户的账号密码
  • 通过 jwt.sign 方法来生成token
  • 每次请求数据的时候通过 jwt.verify 检测token的合法性 jwt.verify(token, secret)

2. 权限

通过不同的权限来动态修改路由表

  • 通过 vue的 钩子函数 beforeEach 来控制并展示哪些路由, 以及判断是否需要登陆

    • 通过调用 getUserInfo方法传入 token 获取用户信息, 后台直接解析 token 获取里面的 信息 返回给前台
  • 通过调用 setRoutes方法 动态生成路由

axios 请求封装, 统一对请求进行管理

面包屑 / 标签路径

  • 通过检测路由来把当前路径转换成面包屑
  • 把访问过的路径储存在本地,记录下来,通过标签直接访问

上面介绍了几个主要以及必备的后台管理功能,其余的功能模块 按照需求增加就好


前台
前台展示的页面跟后台管理界面差不多, 也是用vue+webpack搭建,基本的结构都差不多,具体代码实现的可以直接在github下载便行


server端

权限

主要是通过 jsonwebtoken 的verify方法检测cookie 里面的token 验证它的合法性

日志

日志是采用 log4js 来进行管理的,
log4js 算 nodeJs 常用的日志处理模块,用起来额也比较简单

  • log4js 的日志分为九个等级,各个级别的名字和权重如下:

  • 设置 Logger 实例的类型 logger = log4js.getLogger('cheese')
  • 通过 Appender 来控制文件的 名字路径类型
  • 配置到 log4js.configure
  • 便可通过 logger 上的打印方法 来输出日志了 logger.info(JSON.stringify(currTime: 当前时间为${Date.now()}s))

定制书写规范(API)

  • 设计思路
    当应用程序启动时候,读取指定目录下的 js 文件,以文件名作为属性名,挂载在实例 app 上,然后把文件中的接口函数,扩展到文件对象上 

    读取出来的便是以下形式:
    app.controller.admin.other.markdown_upload_img 便能读取到 markdown_upload_img 方法

    在把该形式的方法 赋值过去就行
    router.post('/markdown_upload_img', app.controller.admin.other.markdown_upload_img)

通过 mongoose 链接 mongodb

封装返回的send函数

通过 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 集合注册一个账号进行登录
  7. cnpm run dev:client 启动前台页面

参考文章

个人博客
github
基于Koa2搭建Node.js实战项目教程
手摸手,带你用vue撸后台

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in MongoDB, NodeJS, Vue.js and tagged by 织梦先生. Bookmark the permalink.