Sash
Sash

Reputation: 4598

Nodejs importing multiple classes with modules.export from multiple source files

I have a directory with multiple js source files that is imported on client side webpage. I am also needing to import all of those sources files into server side node js app.

I have used the following approach so far

if( 'undefined' != typeof global ) {
    module.exports = global.Class= Class;
}

The code is appended to the end of the source file

However I need to avoid editing the source files. Is there a good approach of how to import all of the classes contained the source folders? Instead of just running through the source files and having a modules.exports for each class? Also is there a way to give a directory to the require() call and have it import all the contained source files?

Upvotes: 0

Views: 2000

Answers (3)

hWndepT
hWndepT

Reputation: 301

file: tool.js

(function(exports) {

    exports.Hello = function(name) {
        console.log('Hello %s', name);
    }

})(exports || window);

file index.js

require('./tool').Hello('username');

Upvotes: 1

Plato
Plato

Reputation: 11052

If you could modify the client side files, you could use this pattern: http://caolanmcmahon.com/posts/writing_for_node_and_the_browser/

Upvotes: 1

DF_
DF_

Reputation: 3973

By exporting the objects into the global namespace you are kind of going against best standards in Javascript. The point in the module.exports is so that you can use requireJS to import the object that you need, rather than have every object available to you. So I'm afraid the answer is no, the require call only accepts single module references (due to the return value of the function assigning the object to a variable).

The 'good' approach would be to include a single file on the client that holds your main cilent code that references the modules/objects it needs to continue working. The source files will then be included as and when they are needed.

Upvotes: 2

Related Questions