(1)通过module.exports导出对外的变量或接口
(2)通过require将其他模块导入到当前的作用域中
(1)所有模块都运行在当前模块的作用域中,不会污染全局作用域
(2)模块同步加载,根据文件中模块出现的顺序依次加载
(3)模块可以多次加载,但只有在第一次加载时运行,其他的加载会放入缓存中,后面再使用时直接从缓存中读取
(1)id:表示模块的标识符
(2)parent:代表调用模块的模块
(3)exports:表示导出的值
(4)paths:表示模块的查找路径。
(5)path:当前模块所在的路径
(6)filename:当前模块的文件名
强调:在Commonjs规范中所有的模块都是Module(对象)
- exports.area = function(r){
- return Math.PI*r**2
- }
强调:不能直接给exports赋一个值,这样就切断了exports与module.exports之间的连续。不能进行导出了
导入并运行JavaScript文件,返回的是exports对象
(1)加载文件的默认后缀名是:.js
(2)如果参数字符串以"/"开头,表示加载的文件是位于绝对路径下的文件
(3)如果参数字符串以"./"开头,表示加载的文件是位于相对路径下的文件
(4)如果参数字符串不以"/"或"./"开头,则表示加载的是一个默认提供的核心模块(位于node的系统安装目录中),或者一个位于各级node_modules目录的安装模块(全局安装或局部安装)