Facebook Pixel
Building Modular Express APIs With Routers and Services

How do I mount modules in app.js?

The answer

app.use('/api/v1/users', require('./modules/users/users.router')). Each module exports its router. Mount under a versioned path. app.js stays thin: global middlewares, module mounts, error handler.

More FAQs in Building Modular Express APIs With Routers and Services

Group each feature into a module: router, controller, service, model, validations in one folder (src/modules/users/). Mount modules in app.js. Each module is cohesive, independent, testable, and reusable.

Cohesion (everything for a feature in one folder), independence (a module can be extracted into a microservice later), testability (test the service without HTTP context), team scalability (different teams own different modules), and reusability across apps.

For medium to large apps. For tiny apps with 3 routes, a flat structure (routes/, controllers/, models/) is fine. The module pattern adds folder nesting that is not worth it for tiny apps.

Still have questions?

Browse all our FAQs or reach out to our support team

Want to upskill yourself?

Your learning library

Small steps. Big possibilities.

Find your next course. Build something great.

Our courses are taking a Coffee break, but your curiosity shouldn't. Stay engaged with namastedev linkedin, youtube, discord and other resources while you wait.

0
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.
Please Login.