0.1.1 • Published 6 years ago

generator-naive v0.1.1

Weekly downloads
6
License
-
Repository
-
Last release
6 years ago

generator-naive

generator-naive取名为naive的目的是让你明白膜法的力量,以至于你不总在Node.js项目开发过程中显得那么too young, too simple, sometimes naive.

npm.io

开始

  • npm install -g yo
  • npm install -g generator-naive
  • mkdir myapp && cd myapp
  • yo naive

介绍

generator-naive是一个基于Koa2Node.js服务端MVC脚手架。方便我们快速完成服务端接口开发。

npm.io

技术栈

  • Koa2
  • MySQL

开始使用

  • 在本地数据库导入示例sql文件,示例sqlsql/too_young_too_simple.sql
  • 更改config/local.js文件,设置本地sql用户名和密码。以保证成功连接数据库。
  • 打开浏览器localhost:3000/test,查看返回结果。

特点

通过函数名注册路由

不需要在通过JSON文件配置化注册路由,将routerhandler合二为一,你只需要更改router目录下的函数即可实现路由注册:

const Router = require('./../framework').Router;
const testService = require('./../service/test_service');
const PATH = '/test';

class TestRouter extends Router {
  /**
   * getTest -> { "path": `${PATH}/insert`, "method": "GET" }
   * @param  {Object} ctx
   */
  async getTest(ctx) {
    let data = await testService.test();
    console.log(data);
    ctx.ok(data);
  }

  /**
   * getInsert -> { "path": `${PATH}/insert`, "method": "POST" }
   * @param  {Object} ctx
   */
  async postInsert(ctx) {
    let name = ctx.query.name;
    let data = await testService.insert(name);
    console.log(data);
    ctx.ok({});
  }
}

// mount router to path: PATH
module.exports = new TestRouter().mount(PATH);

更便捷的SQL

使用generator-naiveSQL操作则更加简单,你不用关心MySQL连接等相关操作,只需要在service层调用你写的dao即可。通过在dao层传入DbUtil.queryEscape的参数即可完成SQL查询。

const BaseClass = require('./../framework').BaseClass;
const DbUtil = require('../util/db_util');

class testDao extends BaseClass {
  constructor(...args) {
    super(...args);
    // regis your table
    this.table = 'user_info';
  }

  getAllData() {
    return DbUtil.queryEscape(`
      SELECT
        *
      FROM
        ${this.table}
    `);
  }

  insertUser(name) {
    return DbUtil.queryEscape(`
      INSERT INTO
        ${this.table}
        (name)
      VALUES
        (:name)
    `, {
      name: name
    });
  }
};

module.exports = new testDao();

日志

generator-naive使用winston来进行日志打印,你只需要在任何需要打印日志的地方引入winston即可完成日志打印。

winston.info('too young too simple, sometimes naive');

TODO

  • 日志打印记录完善
  • 防止SQL注入,使用joi做鉴权中间件
  • express 支持
  • 配置化yeoman
0.1.1

6 years ago

0.1.0

6 years ago