typescript node.js Express-Routen getrennte Dateien Best Practices

Verwenden von Express in einem Node-Projekt zusammen mit Typescript, was die "Best Practices" für express.Router wären.

example directory structure

|directory_name
  ---server.js
  |--node_modules
  |--routes
     ---index.ts
     |--admin
        ---admin.ts
     |--products
        ---products.ts
     |--authentication
        ---authentication.ts

so innerhalb von index.ts werden alle Subrouter gekapselt und verwaltet



<pre class="snippet-code-js lang-js prettyprint-override"><code>    //admin.ts (nested inside of index.ts)
    import * as express from "express";

    export = (() => {
        
        let router = express.Router();
              
        router.get('/admin', (req, res) => {
            res.json({success: true});
        });
        
        return router;
    })();</code></pre>



    //index.ts (master file for express.Router)

    import * as express from "express";

    //import sub-routers
    import * as adminRouter from "./admin/admin";
    import * as productRouter from "./products/products";

    export = (() => {

      let router = express.Router();

      // mount express paths, any addition middleware can be added as well.
      // ex. router.use('/pathway', middleware_function, sub-router);

      router.use('/products', productRouter);
      router.use('/admin', adminRouter);

      //return for revealing module pattern
      return router;
    })(); //<--- this is where I don't understand something....

um Schluss würden wir unsere server.js einrichte



<pre class="snippet-code-js lang-js prettyprint-override"><code>    //the usual node setup
    //import * as *** http, body-parser, morgan, mongoose, express <-- psudocode

    import * as masterRouter from './routes/index'

    var app = express();
    //set-up all app.use()

    app.use('/api', masterRouter);

    http.createServer(app).listen(8080, () => {
          console.log('listening on port 8080')
        };</code></pre>



Meine Hauptfrage ist wirklich, ist index.ts (masterRouter-Datei) und es sind verschachtelte Routen, die IIFes @ sin

export = (function () {}) ();

wäre das der richtige / beste Weg, um Typoskript-Module für Router zu schreiben?

oder wäre es besser, ein anderes Muster zu verwenden, vielleicht nutzt eines das Muster

export function fnName () {} - export class cName {} - export default.

der Grund für das IIFe ist, dass ich beim Importieren in eine andere Datei das Modul nicht initialisieren muss und es immer nur 1 Instanz von jedem Routertyp gibt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage