在模块化开发中,一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到。下面对Node.js模块成员的导入出进行详细讲解。
exports和require()
Node.js为开发者提供了一个简单的模块系统,其中exports是模块公开的接口,require0用于从外部获取一个模块的接口,即获取模块的exports对象。若想在一个文件模块中获取其他文件模块的内容,首先需要使用 require0方法加载这个模块,在被加载的模块中使用exports或者module.exports对象对外开放的变量、函数等,require0函数的作用是加载文件并获取该文件中的module.exports 对象接口。
下面通过例2-3来演示如何在Node.js中进行模块成员的导入和导出。
(1)创建C:code\kchapter02Wemo01 目录,在该目录下创建info.js文件作为被加载模块,编写如下代码。
const add = (nl, n2) => nl + n2;
exports.add = add;
上述代码中,第1行代码声明了一个add()函数用于实现加法功能,该函数有nl和n2两个参数,在函数体中返回nl和n2相加的结果;第2行代码使用expors对象向模块外开放add(),其中等号左侧的add表示expors对象的属性名,等号右侧的add是实现的add()数。
(2)在demo01目录下新建b.js文件,实现在b.js模块中导入fo.js模块,编写如下代码。
const info = require('./info');
//模块导入时,模块的后缀。js是可以省略的
console.log(info.add(10, 20)); // 30
上述代码中,第l行代码使用require0方法加载imfo.js模块,因为info.js和b.js在同一个目录下,所以使用相对路径加"√"模块在当前目录下。加载完毕后返回一个expors对象,在该对象中包含了所加载模块对外开放的函数的值。
(3)打开命令行工具,切换到b,js文件所在的目录,并输入“node b.js”命令,b.js文件执行结果如图所示。
总结出Nodejs的模块化开发的步骤,具体如下。
(l)通过expors对象对模块内部的成员进行导出操作。
(2)通过require0方法对依赖的模块进行导入操作。