1

将 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);
}

我发现这是正确的方法,因为:

  • 您在路由定义之上编写路由文档
    • 如果修改路线,则修改文档
  • 您的控制器上方有路由文档
    • URL 参数/正文内容 (req.params.name // req.body.name)
    • 要返回的 HTTP 错误代码
    • 像 webstorm 这样的 IDE 使用这些注释来自动完成

为了寻找最佳实践,我被多次告知我应该创建一个控制器并在其他地方进行路由定义,以以下代码结尾:

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 条道路做同样的事情,您可以让它们使用相同的控制器。

  • 我应该继续分开我的控制器和我的路线吗?
  • 如果是,我应该如何记录它?
  • 这样的代码组织有什么好处?
4

1 回答 1

1

应该在http://programmers.stackexchange.com页面上提出一个哲学问题。但无论如何...

当我使用框架时,我个人的做法是遵循框架本身的风格,永远不要改变编码风格。对我来说,这很重要,尤其是当我与其他开发人员一起工作时。

假设您想为团队带来新人。由于您更改了代码的结构方式,因此您不再需要任何 ExpressJS 经验。这意味着您必须与新人坐下来并解释不同的编码风格。

另一件事是把所有东西都变成一个类是一种矫枉过正的做法。这是不必要的复杂性的额外层,您和其他人将不得不绕开它。此外,在这种情况下,您不会使用课程的好处。

如果是我,我会保持 ExpressJS 的编码风格,并且尽可能简单:)。注释?每条路线都有一个很好的解释,例如:

/**
 * Nice description
 *
 * @param {string}   var-name   description
 * @param {int} var-name   description
 */
于 2016-07-31T11:16:35.833 回答