这篇简单的整理了nodejs的模块化的内容。
- 每一个js文件是一个模块。每个js文件其实是被一个函数包裹着
- 引用文件需要require
- 提供接口需要用export
具体的内容直接看实例:
md.js
module.exports = {
x: 10,
fn: () => { console.log(arguments.callee + '') },
}
// exports.z = 30;
var y = 20;
console.log(y);
test.js
const md = require('./md.js');
md.fn();
//所有的模块都是函数,通过 console.log(arguments.callee + '') 方式可以查看函数的值。
/*
20 => 执行了md.js里的 console.log(y);
function (exports, require, module, __filename, __dirname) { =>执行了 console.log(arguments.callee + '')
module.exports = {
x: 10,
fn: () => { console.log(arguments.callee + '') },
}
var y = 20;
console.log(y);
}
*/
/*
模块函数的参数,每个模块文件node都会包一个函数,而且传这4个参数
exports: 通过该对象是对外报漏属性和方法
require: 函数,引用模块
module: 当前本身模块,exports是module的属性
__filename:当前模块路径
__dirname: 当前模块文件夹路径
*/
var aa =10; //这是局部变量
bb = 10; //这是全局变量
console.log(global.aa); //undefined
console.log(global.bb); //10
/*
exports 和 module.exports的区别:
exports是模块的属性,module.exports是模块的方法,module.exports是模块的属性和方法的集合。
*/
var obj = {}
obj.a = {};
var a = obj.a;
console.log(a == obj.a); //true
a.name = '小明';
console.log(obj.a.name); //小明
a = new Object();
console.log(a.name); //undefined
console.log(obj.a.name); //小明
{
//这是改的是module的属性的值
module.exports = {
}
//这是改的是对象,直接新建对象值。所以这种方式无效,只能 exports.xxx =
exports = {
}
}
欢迎大家的意见和交流
email: li_mingxie@163.com
网友评论