##目录结构
D:.
└─nodejs
└─commonjs
index.js
lib.js
引入文件
引入文件时需要使用require()方法
//index.js
console.log('start require');
require('./lib.js')
console.log('end require');
//lib.js
console.log('hello world')
//terminal
PS D:\Node\nodejs\commonjs> node index.js
start require
hello world
end require
引用结果
当打印 lib 的引用结果可以看到是一个对象
//index.js
console.log('start require');
const lib = require('./lib.js')
console.log(lib); //{}
console.log('end require');
指定引用
可以挂载object function 变量等等
//lib.js
console.log('hello world')
exports.hello = 'world';
//index.js
console.log('start require');
const lib = require('./lib.js')
console.log(lib); //{ hello: 'world' }
console.log('end require');
同一引用
当修改 index.js 为引入的 lib添加一个方法时候,我们在lib中延时打印了exprots对象,可以看到当前引入的对象也发生了改变
//index.js
console.log("start require");
const lib = require("./lib.js");
console.log(lib);
console.log("end require");
lib.add = function (a, b) {
return a + b;
};
//lib.js
console.log('hello world')
exports.hello = 'world';
setTimeout(() => {
console.log(exports)
}, 2000)
PS D:\Node\nodejs\commonjs> node index
start require
hello world
{ hello: 'world' }
end require
{ hello: 'world', add: [Function] }
设置引用
当导入lib时,默认会返回exports空对象,如果我们指定返回moudle.exports那么所有挂载到exports对象下面的方法以及属性只会存在于lib中, index中只会接收到module.exports导出的结果
//index.js
console.log("start require");
const lib = require("./lib.js");
console.log(lib);
console.log("end require");
lib.add = function (a, b) {
return a + b;
};
console.log(lib.hello)
//lib.js
console.log('hello world')
exports.hello = 'world';
module.exports = function say() {
return 'hello'
}
setTimeout(() => {
console.log(exports)
}, 2000)
//teminal
PS D:\Node\nodejs\commonjs> node index
start require
hello world
[Function: say]
end require
undefined
{ hello: 'world' }