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

开始
- npm install -g yo
- npm install -g generator-naive
- mkdir myapp && cd myapp
- yo naive
介绍
generator-naive是一个基于Koa2的Node.js服务端MVC脚手架。方便我们快速完成服务端接口开发。

技术栈
Koa2MySQL
开始使用
- 在本地数据库导入示例
sql文件,示例sql在sql/too_young_too_simple.sql。 - 更改
config/local.js文件,设置本地sql用户名和密码。以保证成功连接数据库。 - 打开浏览器
localhost:3000/test,查看返回结果。
特点
通过函数名注册路由
不需要在通过JSON文件配置化注册路由,将router和handler合二为一,你只需要更改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-naive,SQL操作则更加简单,你不用关心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