简要介绍Node中的模块

在开发过程中,为了方便编写和维护代码,我们把函数分组分别放在不同文件里面。在Node环境中,一个js文件就是一个模块(module),这样做最大的好处就是大大提高了代码的可维护性,其次是提高代码的可复用性,而且使用模块还可以避免函数名和变量名的冲突。
首先创建一个A.js

'use strict';

var h = 'Hello';

function greet(name) {
    console.log(h + ', ' + name + '!');
}

module.exports = greet;

函数greet()是在A模块中定义的,如果要在其他模块中调用这个方法的话怎么办呢?其实答案就是最后一行代码,它把函数greet()作为模块的输出暴露出去,使其他模块可以调用这个方法。
那么接下来的问题是其他模块是如何调用函数greet()的呢?
创建一个B.js的文件

'use strict';

// 引入hello模块:
var greet = require('./A');

var h = 'A-Module';

greet(h); // Hello, A-Module!

  

通过Node提供的require函数来引入A模块

var greet = require('./A')

引入的A模块作为变量存储在变量greet中,而A模块暴露出来的方法正是函数greet();所以模块B(B.js)就成功引用了模块A中的greet()方法,然后就可以直接使用这个方法了。
使用require引入模块时候,要注意模块的相对路径,Node会依次在内置模块、全局模块和当前模块中查询你引入的模块名,如果在此过程中程序报错,请务必要检查模块名是否正确,模块文件是否存在,相对路径是否正确。
以上这种模块加载机制被称为CommonJS规范。
在这个规范下,每个js文件都是一个模块,它们内部各自使用的变量名和函数名都互不冲突。一个模块想要对外暴露变量(函数),可以使用module.export = variable;一个模块想要引用其他模块暴露的变量(函数)可以使用var ref = require('module_name');

posted @ 2018-04-12 15:40  司徒海棠  阅读(396)  评论(0编辑  收藏  举报