我在TypeScript中构建了一个暴露RESTful API的Node.js网站。
将不同方法分离到不同类/文件的最佳做法是什么?
我想我需要为每个资源创建一个单独的类。例如:
var varname = jQuery.noConflict();
这是真的吗?如果我有很多资源,每个只包含一个方法怎么办?
例如:
class Customers{
router.get('/customers');
router.post('/customers');
router.put('/customers');
router.delete('/customers');
}
class Orders{
router.get('/orders');
router.post('/orders');
router.put('/orders');
router.delete('/orders');
}
修改 我得知我可以将所有路由放在一个文件中,只需将处理程序分成多个文件即可。所以我的问题是:如何将它们逻辑地分成/分成不同的文件(关于我在问题中写的例子)?
注意:我不需要技术程序信息,但需要逻辑分离的抽象解释。
答案 0 :(得分:2)
我通常不会将路由本身分开,所有路由都在主应用程序模块中配置:
// server.js
var routes = require('routes'); // handlers and not the route definitions
// list of routes
router.get('/orders', routes.orderList);
router.get('/orders/:id', routes.orderGet);
router.post('/customers', routes.customerCreate);
在routes
文件夹下我有处理程序:
├── routes
│ ├── index.js
│ ├── orderGet.js
│ ├── orderList.js
│ ├── customerCreate.js
│ ├── ...
index.js
有一个所有路由器的列表(我认为它可以改进以动态生成),每个路由处理程序如下所示:
// Require dependencies
var Q = require('q');
var models = require('../models');
/*
* GET order list.
*/
exports.route = function(req, res, next){
// Handle input parameters, generate the response
}
我的方法是每个路由有一个文件并使用'methodGroupMeaning'之类的命名,例如'orderGet','orderList'等。
这样文件自然地分组在文件系统中(按名称排序)。即使是一个有很多路线的大型项目,也很容易找到你需要的路线文件,同时路线模块保持小而干净。