2016-07-31 9 views
0

Express.js 4.X mit NodeJS 6.x verwendenExpress.js, Routendefinition, Controller Standort und api Dokumentation

ich vorher meine Routen wurde definiert, auf diese Weise:

/** 
* @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); 
} 

Ich fand es war der richtige Weg, tun es, weil:

  • Sie die Route Dokumentation über der Routendefinition schreiben
    • Wenn Sie die Route ändern, ändern Sie die Dokumentation
  • Sie die Route Dokumentation über Ihren Controller haben
    • URL params/Körperinhalt (req.params.name // req.body.name)
    • Code HTTP-Fehler
    • IDE wie WebStorm Verwendung zurückzukehren jenen Kommentar für die automatische Vervollständigung

für die besten Praktiken der Suche, ich habe schon viele Male gesagt, ich soll einen Controller erstellen und die Strecke defintion an anderer Stelle machen, mit dem folgenden Code endet:

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

Der einzige gute Grund, warum ich mit dieser Art und Weise sehen organisieren Ihr Code ist, dass wenn Sie zwei Straßen haben, die dasselbe Zeug machen, können Sie sie den gleichen Controller benutzen lassen.

  • Sollte ich meinen Controller & meine Routen trennen?
  • Wenn ja, wie soll ich das dokumentieren?
  • Was sind die Vorteile einer solchen Code-Organisation?

Antwort

0

Bit einer philosophischen Frage, die eher auf der http://programmers.stackexchange.com Seite gefragt werden sollte. Aber auf jeden Fall ...

Meine persönliche Herangehensweise, wenn ich ein Framework verwende, ist, dem Stil des Frameworks selbst zu folgen und niemals den Code-Stil zu ändern. Für mich ist das besonders wichtig, wenn ich mit anderen Entwicklern zusammenarbeite.

Nehmen wir an, Sie möchten jemand neues ins Team bringen. Sie können keine ExpressJS-Erfahrung mehr benötigen, da Sie die Struktur des Codes ändern. Das heißt, Sie müssen sich mit der neuen Person hinsetzen und den unterschiedlichen Programmierstil erklären.

Eine andere Sache ist, dass alles in eine Klasse zu verwandeln ist ein Overkill. Es ist eine zusätzliche Schicht von unnötiger Komplexität, die Sie und andere umschließen müssen. Außerdem werden Sie in diesem Fall nicht die Vorteile der Klasse nutzen.

Wenn ich es wäre, würde ich den Code-Stil beibehalten, wie ExpressJS es beabsichtigt, und so einfach wie möglich :). Bemerkungen? Jede Route mit einer netten Erklärung wie dieser zum Beispiel:

/** 
* Nice description 
* 
* @param {string} var-name description 
* @param {int} var-name description 
*/