KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架。可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上。
KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架。可以直接在项目里使用 ES6/7(Generator Function, Class, Async & Await)等特性,借助 Babel 编译,可稳定运行在 Node.js 环境上。
//base controller, admin/controller/base.controller.js
export default class extends koahub.http{
constructor() {
super();
console.log('base constructor');
}
isLogin() {
console.log('base isLogin');
}
}
//index controller, admin/controller/index.controller.js
import base from "./base.controller";
export default class extends base{
constructor() {
super();
console.log('index constructor');
}
index() {
super.isLogin();
super.json({msg: 'this is a msg'});
console.log('index index');
}
}
项目中可以使用 ES6/7 里的所有特性,借助 Babel 编译,可以稳定运行在 >=0.12.0 的 Node.js 环境中。
组件1:koahub-loader
$ npm install koahub-loader
// 1.model loader
var model = loader([
{
root: './app/model',
suffix: '.model.js'
},
{
root: './addon',
suffix: '.model.js',
filter: [/\w*\/model\//]
}
]);
// 2.controller loader
var app = require('koa')();
var router = require('koa-router')();
var controller = loader([
{
root: './app/controller',
suffix: '.controller.js',
prefix: '/',
}, {
root: './addon',
suffix: '.controller.js',
prefix: '/addon/',
filter: [/\w*\/controller\//]
}
]);
for (var key in controller) {
router.use(key, controller[key].routes());
}
app.use(router.routes());
// 3.util loader
var util = loader([
{
root: './app/common',
suffix: '.util.js'
},
{
root: './addon',
suffix: '.util.js',
filter: [/\w*\/common\//]
}
]);
官网:http://js.koahub.com
组件2:koahub skip
koahub skip middleware
Conditionally skip a middleware when a condition is met.
With existing middlewares:
var skip = require('koahub-skip');
var serve = require('koa-static');
var static = serve(__dirname + '/public');
static.skip = skip;
app.use(static.skip({ method: 'OPTIONS' }));
If you are authoring a middleware you can support skip as follow:
module.exports = function () {
var mymid = function *(next) {
// Do something
};
mymid.skip = require('koahub-skip');
return mymid;
};
-
method
it could be an string or an array of strings. If the request method match the middleware will not run.
-
path
it could be an string, a regexp or an array of any of those. If the request path match, the middleware will not run.
-
ext
it could be an string or an array of strings. If the request path ends with one of these extensions the middleware will not run.
-
custom
it must be a function that returns true
/ false
. If the function returns true for the given request, ithe middleware will not run. The function will have access to Koa's context via this
-
useOriginalUrl
it should be true
or false
, default is true
. if false, path
will match against ctx.url
instead of ctx.originalUrl
.
Require authentication for every request skip the path is index.html.
app.use(requiresAuth().skip({ path: ['/index.html', '/'] }))
Avoid a fstat for request to routes doesnt end with a given extension.
app.use(static.skip(function () {
var ext = url.parse(this.originalUrl).pathname.substr(-4);
return !~['.jpg', '.html', '.css', '.js'].indexOf(ext);
}));
官网:http://js.koahub.com
