1.导出
方法一:
exports.属性名 = 值/变量;
注意:可以导出多个exports.属性名 = 值/变量;
主模块/ 引入模块.js
const myModule = require("./自定义模块.js");
console.log(myModule.username);
console.log(myModule.userage);
myModule.getInfo();
console.log(myModule.address);
自定义模块.js
// 自定义模块
// =========1.变量============
let username = "Jack";
let userInfo = {age:10, grade:"H5"};
// 导出/ 暴露内容
exports.username = username;
exports.userObj = userInfo;
//直接赋值
// =========2.变量============
exports.userage = 18;
// =========3.方法============
exports.getInfo = function () {
console.log(userInfo,username);
}
//另一个方法表示
module.exports.address = "北京";
//module.exports 等同于exports
console.log(module.exports === exports);//输出true
方法二:
module.exports = 对象;
moudule.exports = 类/构造函数/函数;
注意:写多个module.exports = 对象,会覆盖上一个,修改其的值;
导出的类/构造函数必须通过new 下进行导出,对象不能new;
例子:
自定义模块2-2.js
//自定义模块2
module.exports = {
user:"丽丽",
tag: 100
}
//方法
//此时user和tag输出的为undefined,因为这个exports方法会直接覆盖上面的exports
module.exports = function () {
console.log("自定义模块2");//主模块调用:myModule2()或new myModule2()
}
// 导出===类(构造函数)
module.exports = class UserName{
// console.log("我是个类/构造函数");//导进的模块必须通过new 下进行导出,对象不能new
}
//这样不能进行导出,相当于又声明了一个exports,exports添加属性和方法是可以进行导出,修改属性或者方法就不能进行导出
// exports = {
// a:100
// }
主模块.js
// 自定义模块2
console.log("=============自定义模块2===============");
const myModule2 = require("./自定义模块2-2.js");
// console.log(myModule2);
console.log(myModule2.user);
console.log(myModule2.tag);
// myModule2();//还可以new myModule2()表示
new myModule2();
例子:计算圆、正方形的面积和周长
main.js
// 引入模块
let square = require("./square.js");
let circle = require("./circle.js");
// 计算正方形的面积和周长
let squareClass = new square(10);
console.log("正方形的面积是:"+squareClass.area());
console.log("正方形的周长是:"+squareClass.circumference());
// 计算圆的面积和周长
console.log("圆的面积是:"+circle.area(5));
console.log("圆的周长是:"+circle.circumference(5));
square.js
//计算正方形的面积和周长,使用模块
module.exports = class {
constructor(w){
this.w = w;
}
area(){
return this.w ** 2;
}
circumference(){
return this.w * 4;
}
}
circle.js
//计算圆的面积和周长
exports.area = function (r) {
return Math.PI * (r ** 2);
}
exports.circumference = function (r) {
return 2 * Math.PI *r;
}