Randal Cunanan
Randal Cunanan

Reputation: 2529

Express.js - ASP.NET-like MVC Routing

I'm trying to setup an MVC architecture for Express. What I am trying to accomplish is a routing mechanism close to ASP.NET's. For example for the following route:

/users/detail/1

express should call a module under controllers directory named users.js. Within the users.js module is a function named detail. And within the function, I can simply get the request parameter to get the id of the user.

My idea is to extract the users and map it to a users.js file using a simple require statement. But how can I tell express to call details() function by simply extracting the action part of the route which is 'detail' in the above example. I can use eval() but I am hearing that it's not a safe thing to do? Thanks in advance.

Upvotes: 2

Views: 714

Answers (1)

user131441
user131441

Reputation:

In browser-side javascript, you can typically do the following

function a () { console.log('called a');
window['a']();    // called a

You can do similar in node by replacing window with global such as

function a () { console.log('called a');
global['a']();    // called a

However, if you are pulling this function in from another file, it will be little different. Let's assume that you have the following file a_module.js:

exports.a = function () { console.log('a called'); }

And then in you're main file, you can do the following:

var a_mod = require('./a_module.js');
a_mod['a']();      // a called

Upvotes: 2

Related Questions