0.1.1 • Published 6 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
脚手架。方便我们快速完成服务端接口开发。
技术栈
Koa2
MySQL
开始使用
- 在本地数据库导入示例
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