毕业设计——基于node + koa + mongodb 的博客系统

项目说明:

该项目采用前后端分离结构,权限认证采用 token 来实现

目录结构:

| public
| src
| | config ------------------配置文件
| | controller --------------控制层
| | database ----------------数据库相关
| | middleware --------------中间件
| | serviece ----------------服务层
| | utils -------------------工具类
| | app.js ------------------入口文件
| .babelrc
| .editorconfig
| .eslintrc
| .gitignore
| index.js ------------------启动文件
| package.json

技术栈:

  • Node.js
  • Koa
  • MongoDB

项目启动:

# 安装依赖
yarn install 或者 npm install

# 启动项目
yarn start 或者 npm run start

代码说明:

  • 项目的日志管理使用 log4js 模块,具体配置如下:
// 配置文件
const log4jsConf = {
   
  appenders: {
   
    console: {
   
      type: 'console'
    },
    http: {
   
      type: 'dateFile',
      filename: path.resolve(__dirname, '../../log/http'),
      pattern: '-yyyy-MM-dd.log',
      alwaysIncludePattern: true
    },
    error: {
   
      type: 'file',
      filename: path.resolve(__dirname, '../../log/error.log'),
      maxLogSize: 1048576,
      backups: 10
    }
  },
  categories: {
   
    default: {
   
      appenders: ['console'],
      level: 'info'
    },
    http: {
   
      appenders: ['http'],
      level: 'info'
    },
    error: {
   
      appenders: ['error'],
      level: 'error'
    }
  }
}

// 日志管理
export default app => {
   
  app.use(async (ctx, next) => {
   
    const {
    method, host, url, headers } = ctx
    const httpInfo = {
   
      method,
      host,
      url,
      referer: headers['referer'],
      userAgent: headers['user-agent']
    }
    httpLogger.info(JSON.stringify(httpInfo))
    await next()
  })
  • 统一错误处理则使用了 Decorator 装饰器来实现,从而减少一定的代码量:
//装饰器配置
export function handleError(target, name, descriptor) {
   
  const oldValue = descriptor.value

  descriptor.value = async function() {
   
    try {
   
      return await oldValue.apply(this, arguments)
    } catch (error) {
   
      return Result.error(

你可能感兴趣的:(毕业设计指导及定制,课程设计,mongodb,数据库)