module,模块的意思,有点像jar,通过import引入到class文件
1.最常见的模块导入
从 node_modules 目录加载
如果传递给 require() 的模块标识符不是一个核心模块,也没有以 ‘/’ 、 ‘…/’ 或 ‘./’ 开头,则 Node.js 会从当前模块的父目录开始,尝试从它的 /node_modules 目录里加载模块。 Node.js 不会附加 node_modules 到一个已经以 node_modules 结尾的路径上。
如果还是没有找到,则移动到再上一层父目录,直到文件系统的根目录。
例子,如果在 ‘/home/ry/projects/foo.js’ 文件里调用了 require(‘bar.js’),则 Node.js 会按以下顺序查找:
/home/ry/projects/node_modules/bar.js
/home/ry/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
这使得程序本地化它们的依赖,避免它们产生冲突。
模块作用域
__dirname
当前模块的目录名。 与 __filename 的 path.dirname() 相同。
示例,从 /Users/mjr 运行 node example.js:
console.log(__dirname);
// 打印: /Users/mjr
console.log(path.dirname(__filename));
// 打印: /Users/mjr
__filename
当前模块的文件名。 这是当前模块文件的已解析的绝对路径。
对于主程序,这不一定与命令行中使用的文件名相同。
有关当前模块的目录名,参见 __dirname。
例子:
从 /Users/mjr 运行 node example.js:
console.log(__filename);
// 打印: /Users/mjr/example.js
console.log(__dirname);
// 打印: /Users/mjr
给定两个模块:a 和 b,其中 b 是 a 的依赖文件,并且目录结构如下:
/Users/mjr/app/a.js
/Users/mjr/app/node_modules/b/b.js
b.js 中的 __filename 的引用将返回 /Users/mjr/app/node_modules/b/b.js,而 a.js 中的 __filename 的引用将返回 /Users/mjr/app/a.js。