1.0.9 • Published 4 years ago

@levenx/koa-server v1.0.9

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

Koa 路由配置版

Koa 路由配置版

安装使用

npm i @levenx/koa-server

升级到最新版本

npm update @levenx/koa-server

功能简介

  • POST 请求体处理(包括图片上传)
  • JWT 鉴权
  • 系统日志
  • 跨域
  • mysql 集成
  • redis 集成
  • logs4j 日志
  • mail 集成
  • portal 默认首页

配置属性列表

参数说明备注
appPrefix全局路由前缀
routeDir路由文件配置
jwtjwt 鉴权属性
jwt.secretsecret 密钥
cors跨域配置
mysqlmysql 配置
mysql.modelDirmodels 文件夹
mysql.database数据库名
mysql.host数据库 host
mysql.username数据库用户名
mysql.password数据库密码
redisredis 配置
redis.hostRedis host
redis.passwordredis 密码
redis.dbRedis db
redis.portRedis 自定义端口
redis.prefixRedis key 前缀
log日志配置true | object
log.filename自定义日志文件名
log.level日志输出级别
mail邮件配置
mail.host发送host
mail.auth.user发送邮箱用户名
mail.auth.pass授权码
mail.from自定义发送人

配置示例

{
  appPrefix: "/app",
  routeDir: path.resolve(__dirname, "./routes"),
  jwt: {
    secret: "xxxxxxx",
  },
  mysql: {
    modelDir: path.resolve(__dirname, "./models"),
    database: "koa-server",
    host: "127.0.0.1",
    username: "root",
    password: "xxxxxxx",
  },
  redis: {
    host: "127.0.0.1",
    password: "xxxxxxxx",
    db: "1",
    prefix:"my_"
  },
  log: { filename: "logs/levenx", level: "error" },
  mail: {
    host: "smtp.exmail.qq.com",
    auth: {
      user: "sunlejin@levenx.com",
      // 这里密码不是qq密码,是你设置的smtp授权码
      pass: "xxxxxxxx",
    },
    from: '"乐闻世界" <sunlejin@levenx.com>',
  },
  cors: true,
}

文件配置

//路由文件夹
// routes/common.js

const { home } = require("../services/CommonService");
const common = [
  {
    path: "/",
    service: home,
    unAuth: true,
  },
  {
    path: "/mail",
    service: mail,
    unAuth: true,
  },
];

module.exports = common;


//服务文件夹
// services/CommonService.js

module.exports = class CommonService {
  static async home(ctx, { mysql, redis, next }) {
  	//service 具有 mysql,redis 能力
    let home = await mysql.models.home.create({title:"levenx"});
    let xxx = await redis.getSync("xxx");
    return {
      code: 0,
      redis:xxx
    };
  }
  
   static async mail(ctx) {
    //发送邮件
    ctx.mail("1025534801@qq.com","koa保姆级集成服务","koa保姆级集成服务")
  }
};

//models文件夹
// models/home.js

const Sequelize = require("sequelize");
module.exports = {
  name: "home",
  tableName: "home",
  timestamps: true,
  freezeTableName: true,
  colums: {
    id: {
      field: "id",
      primaryKey: true,
      type: Sequelize.BIGINT,
      allowNull: false,
      autoIncrement: true,
    },
    title: {
      field: "title",
      type: Sequelize.STRING,
      allowNull: false,
    },
  },
};

项目启动

const Server = require("@levenx/koa-server");
const path = require("path");

const config = {
  appNmae: "levenx",
  appPrefix: "/app",
  routeDir: path.resolve(__dirname, "./routes"),
  jwt: {
    secret: "xxxxxxx",
  },
  mysql: {
    modelDir: path.resolve(__dirname, "./models"),
    database: "koa-server",
    host: "127.0.0.1",
    username: "root",
    password: "xxxxx",
  },
  redis: {
    host: "127.0.0.1",
    password: "xxxxx",
    db: "1",
  },
  log: { filename: "logs/levenx", level: "error" },
  mail: {
    host: "smtp.exmail.qq.com",
    auth: {
      user: "sunlejin@levenx.com",
      // 这里密码不是qq密码,是你设置的smtp授权码
      pass: "xxxx",
    },
    from: '"乐闻世界" <sunlejin@levenx.com>',
  },
  cors: true,
};

const App = new Server(config);

App.start(8000);

公众号

乐闻世界公众号