nico144 nico144 - 3 months ago 8
Node.js Question

Can I load multiple files with one require statement?

maybe this question is a little silly, but is it possible to load multiple .js files with one require statement? like this:

var mylib = require('./lib/mylibfiles');


and use:

mylib.foo(); //return "hello from one"

mylib.bar(): //return "hello from two"


And in the folder mylibfiles will have two files:

One.js

exports.foo= function(){return "hello from one";}


Two.js

exports.bar= function(){return "hello from two";}


I was thinking to put a package.json in the folder that say to load all the files, but I don't know how. Other aproach that I was thinking is to have a index.js that exports everything again but I will be duplicating work.

Thanks!!

P.D: I'm working with nodejs v0.611 on a windows 7 machine

Answer

First of all using require does not duplicate anything. It loads the module and it caches it, so calling require again will get it from memory (thus you can modify module at fly without interacting with its source code - this is sometimes desirable, for example when you want to store db connection inside module).

Also package.json does not load anything and does not interact with your app at all. It is only used for npm.

Now you cannot require multiple modules at once. For example what will happen if both One.js and Two.js have defined function with the same name?? There are more problems.

But what you can do, is to write additional file, say modules.js with the following content

module.exports = {
   one : require('./one.js'),
   two : require('./two.js'),
   /* some other modules you want */
}

and then you can simply use

var modules = require('./modules.js');
modules.one.foo();
modules.two.bar();
Comments