Node.JS 3.Modules
在上一节中你看到了我们使用:
var some_var = require('built-in_module_name');
来导入 Node.JS 内建的 Modules
那如果你想导入自己写的 Modules 呢?
Node.JS 提供了命令来供你导入。
现在就开始写脚本来尝试一下导入自己的 module 吧,下面是 modules.js 的内容:
sys = require('sys');
sys.puts('Foobar: ' + foobar.bar('bar'));
如上面的示例,如果导入的是内荐的 module,只需:
require('module_name');
而如果要导入的是自己的 module,如 module_name.js, 就需要像如下这样导入:
require('./module_name');
我们可以看到,不需要加上后缀名 .js。
./ 则表示相对于执行 require 文件的相对路径。比如你的 module 包括在一个名为 "libs"的子目录。则导入的代码应改为:
require('./libs/module_name');
而 Node.JS 也允许使用绝对路径来导入 module:
require('/path/to/module_name');
最后一行输出了 Foobar: 加上了另外一个名为 foobar 的 module 中的 bar 函数的返回值。下面我们来看看 foobar.js 这个 module:
exports.foo = function() {
return foo;
};
exports.bar = function(bar) {
return foo + bar;
};
首先,所有定义在 module 的变量都是相对于这个 module 私有的,他们的作用域仅限于当前的 module,如这个 foo:
var foo = 'Foo';
而需要导出的函数则需要添加到 exports 中。如上例所示的 foo() 跟 bar() 函数,可以在其他的 module 中调用。
在 modules.js 中我们这样使用了 bar 函数:
sys.puts('Foobar : ' + foobar.bar('bar'));
这就会调用了 foobar module 中的 bar 函数,并将其返回值 跟 Foobar: 相加。最后我们看看输出结果。
Foobar : Foobar