啊♂,`php`能夠?qū)憘€文件就自動添加路由睡毒。来惧。。我`nodejs`也想要~~
我知道npm上有這樣相關(guān)的包演顾,但是供搀,為什么不考慮一下自己寫(fuzhi)幾行代碼實現(xiàn)一下呢?
autoRoutes
自動路由添加代碼
code in express
/*app.js*/
var list=[];
readdir(path.join(root, 'routes', 'api'), './api');
function readdir(pathname, sPath) {
var arr = fs.readdirSync(pathname);
arr.forEach(function(item) {
var next = path.join(pathname, item);
var api = sPath + '/' + item;
var stats = fs.statSync(next);
if (stats.isDirectory()) {
readdir(next, api);
} else {
var repath = api.replace('.js', '');
var obj = require(repath);
list.push(obj);
obj.success(app);
}
})
}
/*GET.js*/
module.exports = {
name: '獲取靜態(tài)資源列表',
route: '/api/files/*',
method: 'GET',
dataType: 'json/jsonp',
data: {
limit: '要求返回的限制條數(shù)钠至,默認0',
page: '要求返回的頁碼葛虐,默認1',
cb: 'jsonp返回參數(shù),默認為null'
},
success: function(app) {
var _this = this;
var root = app.get('rootname')
var fs = require('fs');
var path = require('path');
var pub = path.join(root, 'public');
app.get(this.route, function(req, res) {
res.end(req.url)
});
},
}
可以在文件api下自由添加路由文件棉钧,但是現(xiàn)在不支持根據(jù)文件路徑定制路由
因為我覺得屿脐。。宪卿。要是你的需求里面是file/a/b/c/d/e?q=abc
這樣的路由的诵,
那文件夾豈不是得層級多得要死?(實際上是為了restful api考慮)
而GET.js里面其實只需要一個success
的方法就行了佑钾,但是為了方便打印西疤,比如在app.js里面var list=[]
,然后list.push(obj)
,把遍歷到的對象掛載在這個數(shù)組里次绘,這樣就可以實現(xiàn):
app.get('/apis', function(req, res) {
res.json(list);
});
返回所有api瘪阁,然后用可以根據(jù)GET.js里面的屬性,直接渲染成接口文檔邮偎,是不是特別棒管跺?
(我才不會告訴你,使用ajax的時候直接復制粘貼呢禾进。豁跑。。泻云。
下面是文件路徑:
root
├─app.js
├─routes
│ └─api
... ├─file
... ├─GET.js
├─POST.js
├─DELET.js
└─PUT.js
參考自文檔:express-autoroute