文章目录

  • 前言
  • 一、Node.js模块化开发规范
  • 二、exports导出对象
  • 1.模块a.js
  • 2.模块b.js
  • 3.输出结果
  • 三、module.exports导出对象
  • 1.模块a.js
  • 2.模块b.js
  • 3.输出结果
  • 四、exports和module.exports的关系
  • 1.模块a.js
  • 2.模块b.js
  • 3.输出结果
  • 五、exports或module.exports重新指向一个对象,导出对象最终以module.exports为准。
  • 1.module.exports重新指向一个对象
  • 1.模块a.js
  • 2.模块b.js
  • 3.输出结果
  • 2.exports重新指向一个对象
  • 1.模块a.js
  • 2.模块b.js
  • 3.输出结果
  • 总结



前言

模块化开发主要解决文件依赖和命名冲突等问题。


一、Node.js模块化开发规范

1、Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到。
2、模块内部可以使用exports、module.exports对象进行成员导出,使用require方法导入其它模块的exports对象。

二、exports导出对象

1.模块a.js

代码如下:

//模块内部的变量和方法
const age = 12
const sayHi = () => {
    console.log('大家好,我是小明。');
}
console.log('我是a模块输出的内容');
//模块向外导出数据
exports.age = age
exports.sayHi = sayHi

2.模块b.js

代码如下:

const a = require('./a.js')
//const a = require('./a')//后缀可以省略
a.sayHi()
console.log('今年' + a.age + '岁。');

3.输出结果

代码如下:

//导入a.js模块后会运行a.js模块,所以才会输出a.js模块的内容
我是a模块输出的内容
大家好,我是小明。
今年12岁。

三、module.exports导出对象

1.模块a.js

代码如下:

//模块内部的变量和方法
const age = 12
const sayHi = () => {
    console.log('大家好,我是小明。');
}
//模块向外导出数据
module.exports.age = age
module.exports.sayHi = sayHi

2.模块b.js

代码如下:

const a = require('./a.js')
console.log(a);

3.输出结果

代码如下:

{ age: 12, sayHi: [Function: sayHi] }

四、exports和module.exports的关系

exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准。

1.模块a.js

//模块内部的变量和方法
const age = 12
const sayHi = () => {
    console.log('大家好,我是小明。');
}
//模块向外导出数据
module.exports.age = age
exports.sayHi = sayHi

2.模块b.js

const a = require('./a.js')
console.log(a);

3.输出结果

{ age: 12, sayHi: [Function: sayHi] }

五、exports或module.exports重新指向一个对象,导出对象最终以module.exports为准。

1.module.exports重新指向一个对象

1.模块a.js

//模块内部的变量和方法
const age = 12
const sayHi = () => {
    console.log('大家好,我是小明。');
}
//模块向外导出数据
module.exports.age = age
exports.sayHi = sayHi

module.exports = {
    sayHi: sayHi
}

2.模块b.js

const a = require('./a.js')
console.log(a);

3.输出结果

{ sayHi: [Function: sayHi] }

2.exports重新指向一个对象

1.模块a.js

//模块内部的变量和方法
const age = 12
const sayHi = () => {
    console.log('大家好,我是小明。');
}
//模块向外导出数据
module.exports.age = age
exports.sayHi = sayHi

exports = {
    sayHi: sayHi
}

2.模块b.js

const a = require('./a.js')
console.log(a);

3.输出结果

{ age: 12, sayHi: [Function: sayHi] }

总结

建议使用module.exports(狗头 =_= )