koa自动加载路由 不区分http请求方法

浏览:2404 发布日期:2016/07/16 分类:用法示例
wemall微商城代码学习
[代码]README.md
?
var app = require('koa')();
var koaResourceRouter = require('koa-resource-router');
app.use(koaResourceRouter(app, {
root: './app/controller',
suffix: '.js',
action: 'index'
}));

exports.index = function*(ctx, next){
console.log(ctx);
console.log(ctx.query);
console.log(ctx.params);
}
3. [代码]index.js 跳至 [1] [2] [3] [4] [全屏预览]
?
var path = require('path');
var fs = require('fs');

module.exports = function (app, options) {
if (!options || typeof options.root === 'string') {
if (!path.isAbsolute(options.root)) {
options.root = path.join(process.cwd(), options.root);
}
} else {
throw Error('root must be specified');
}
options.suffix = options.suffix || '.js';
options.action = options.action || 'index';

return function* koaResource(next) {
var url = this.url.split('?');
var querystring = url[1];

var url = url[0].split(path.sep);
for (var i = 0; i < url.length; i++) {
if (i == url.length - 2) {
url += options.suffix;
}
}

var _url = '';
var params = [];
var action = options.action;
for (var i = 0; i < url.length - 1; i++) {
if (!url) {
continue;
}

var exists = fs.existsSync(options.root + _url + '/' + url);
if (exists) {
_url += '/' + url;
} else {
params.push(url);
}

if (url.length - 2 == i && !exists) {
throw Error('Not Found');
}
}

this.params = params;
this.querystring = querystring;

var _require = require(path.join(options.root, _url));
yield _require[action](this, next);

yield next;
};
};
4. [代码]package.json
?
{
"name": "koa-http-router",
"version": "1.0.1",
"description": "koa http router",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/einsqing/koa-http-router.git"
},
"keywords": [
"koa",
"koa-router",
"koa-http-router",
"router"
],
"author": "www.wemallshop.com",
"license": "ISC",
"bugs": {
"url": "https://github.com/einsqing/koa-http-router/issues"
},
"homepage": "https://github.com/einsqing/koa-http-router#readme",
"dependencies": {
}
}

作者官网: http://www.wemallshop.com
评论( 相关
后面还有条评论,点击查看>>