我可以使用一个require语句加载多个文件吗?

nic*_*144 23 node.js

也许这个问题有点傻,但是有可能用一个require语句加载多个.js文件吗?像这样:

var mylib = require('./lib/mylibfiles');
Run Code Online (Sandbox Code Playgroud)

并使用:

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

mylib.bar(): //return "hello from two"
Run Code Online (Sandbox Code Playgroud)

在文件夹中,mylibfiles将有两个文件:

One.js

exports.foo= function(){return "hello from one";}
Run Code Online (Sandbox Code Playgroud)

Two.js

exports.bar= function(){return "hello from two";}
Run Code Online (Sandbox Code Playgroud)

我想把一个package.json放在要加载所有文件的文件夹中,但我不知道怎么做.我想的其他方法是有一个index.js再次导出所有内容,但我将重复工作.

谢谢!!

PD:我在Windows 7机器上使用nodejs v0.611

fre*_*ish 35

首先使用require不重复任何东西.它加载模块并缓存它,因此require再次调用将从内存中获取它(因此您可以在不与源代码交互的情况下修改模块 - 这有时是可取的,例如当您想在模块内部存储数据库连接时).

package.json不会加载任何东西,你的应用程序都不会相互影响.它仅用于npm.

现在您不能同时需要多个模块.例如将发生,如果两者是什么One.js,并Two.js具有相同的名称定义的函数?还有更多问题.

但你可以做的是写下额外的文件,比如说modules.js下面的内容

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

然后你可以简单地使用

var modules = require('./modules.js');
modules.one.foo();
modules.two.bar();
Run Code Online (Sandbox Code Playgroud)