将expressJS 4.X与nodeJS 6.x一起使用
我之前用这种方式定义了我的路线:
/**
* @api {get} /users/:userId Get a user
* @apiName GetUser
* @apiGroup User
*
* @apiParam {Integer} userId Users unique ID.
*
* @apiSuccess (Success 201) {text} User email
* @apiError {text} 401/Unauthorized.
* @apiError {text} 404/Not Foud Unknown userId
*/
router.get('/users/:userId', function(req, res, next) {
const userId = req.params.userId;
//get user
res.json(user);
}
我发现这是正确的方法,因为:
寻找最佳实践,我多次被告知我应该创建一个控制器并在其他地方定义路由,以下面的代码结束:
class UserController {
constructor() {
this.listAll = this.listAll.bind(this);
}
getUser(req, res, next) {
const userId = req.params.userId;
//get user...
res.json(user);
}
}
router.get('/users/, UserController.getUser);
我通过这种组织代码的方式看到的唯一理由是,如果你有2条道路做相同的东西,你可以让它们使用相同的控制器。
答案 0 :(得分:0)
应该在http://programmers.stackexchange.com页面上提出一个哲学问题。但无论如何......
我使用框架时的个人方法是遵循框架本身的风格,永远不会改变编码风格。对我来说这很重要,特别是如果我与其他开发人员合作。
假设你想带一个新人进入团队。由于您更改了代码的结构方式,因此无法获得更多ExpressJS体验。意味着你必须与新人坐下来解释不同的编码风格。
另一件事是将所有内容都变成一个类是一种矫枉过正的行为。这是一个额外的不必要的复杂层,你和其他人将不得不围绕它。此外,在这种情况下,您不会使用该课程的好处。
如果是我,我会像ExpressJS那样保持编码风格,尽可能简单:)。评论?每条路线都有一个很好的解释,例如:
/**
* Nice description
*
* @param {string} var-name description
* @param {int} var-name description
*/