Search code examples
javascriptnode.jsexpressexpress-router

How to build large scale express.js sites


I am pretty new to the node.js and express.js landscape. However I have been trying to wrap my head around the code behind creating a site (20+ pages for example) in express.js without the code getting pretty large.

A route, when using a view engine, points the incoming request to index or whatever page they requested. After running the default express-generator with the view engine set to HBS you get something like

app.use('/', index);

This points to the index.js file under the routes folder that contains something like

router.get('/', function(req, res, next){
 res.render('index', {title: 'Express'});
});

And that then renders the index.hbs file to show what I want on the page.

My problem is this. Would you have to have a route for each page you wanted like a profile page, login page, about page, etc? If so wouldn't this create a lot of lines of code in routes if you had 20+ routes? Example would be in the app.js

app.use('a', a);
app.use('b', b);
...
app.use('z', z);

then each would require a corresponding route js file.

I assume there is a cleaner way of doing routing or perhaps I am over thinking this?

Any light on this concern/question of mine would be amazing.


Solution

  • In my express servers I break routes into different sections called "components" Each components can correspond to a give page if you're doing server-side rendering or it can correspond to a set of API routes.

    Each component can have controllers to handle each route, and each controller can borrow from a handful of reusable actions.

    Here's an example of an express server component I made(this example is for a set of API routes but the same architecture can be used for sets of hbs server-side rendering routes):

    https://github.com/AkyunaAkish/react-redux-node-express-todo-list-boilerplate/tree/master/server/components/todos