标签:java 数字 main 相对路径 返回 模块化 自己 object 加载
Node应用由模块组成,每个模块有自己的作用域,里面的函数、变量、类等都是私有的。
CommonJS规定,每个模块内部,module变量(是个对象)代表当前模块,module.exports是对外的接口。其他文件通过require方法加载这个接口,获得该模块输出的数据。
CommonJS模块的特点:
Node内部提供一个Module构建函数,所有模块都是Module的实例;每个模块内部,都有一个Module对象代表当前模块,具有以下属性:
基本功能:读入并执行一个JavaScript文件,返回该模块的exports对象;如没有找到指定模块会报错;
require加载文件后缀名默认为.js;
路径加载规则:
.js,.json, .node后重新搜索,并按对应的文件类型解析;目录加载:require的参数字符串指向一个目录时,会自动查看该目录的package.json文件,然后加载main字段指定的入口文件;如果没有main字段或没有package.json文件,则会加载该目录下的index.js或index.node文件。
require命令加载重复的模块(根据绝对路径识别)实际上只执行一次,后面都是加载缓存;所有缓存都存放在require.cache中。删除模块的缓存可以写如下代码:
//删除指定模块
delete require.cache[moduleName];
//删除所有模块
Object.keys(require.cache).forEach(function(key) {
delete require.cache[key];
})
CommonJS加载模块是加载其输出值的拷贝,加载之后不会受到源模块内部变化的影响。
参考:CommonJS规范
标签:java 数字 main 相对路径 返回 模块化 自己 object 加载
原文地址:https://www.cnblogs.com/muTing/p/9191544.html