node.js中模块有两种类型:核心模块和文件模块,核心模块直接使用名称获取,比如最长用的http模块:
var http=require('http');
路径:
相对路径之当前目录:./xxx/xxx.js 或 ./xxx/xxx。
绝对路径:F:/xxx/xxx.js 或 /xxx/xxx.js 或 /xxx/xxx。
一、
require(路径.扩展名):
如果路径.扩展名存在,则执行加载并返回,否则抛出异常。
二、
require(路径):
1.如果 路径.js 存在,执行加载并返回。
2.如果 路径.node 存在,执行加载并返回。
3.如果 路径/package.json 存在,执行加载(package.json 中 main属性对应的路径)并返回。
4.如果 路径/index.js 存在,执行加载并返回。
5.如果 路径/index.node 存在,执行加载并返回。
6.如果都没查找到,抛出异常。
三、
require(模块名字):
1.如果 模块名字 是系统模块,执行加载并返回。
2.如果 require(./node_modules/模块名字) 能加载到模块(参考require(路径)的介绍),执行加载并返回。
3.如果 require(../node_modules/模块名字) 能加载到模块,执行加载并返回。
4.沿着目录向上逐级执行require(上级目录/node_modules/模块名字),如果能加载到模块,执行加载并返回。
5.知道根目录,如果没查找到,抛出异常。
网友评论