我一直在查看一些NodeJS示例,但我遇到了以下情况:
var module = require('..');
var module = require('../');
我明白需要做什么,但我不明白它写的是这样做的。有人可以向我解释一下吗?
答案 0 :(得分:3)
This is the rule defined in https://nodejs.org/api/modules.html
要求(X)来自路径Y的模块
- 如果X以' ./'开头;或者' /'或' ../ 39;
醇>
一个。 LOAD_AS_FILE(Y + X)
湾LOAD_AS_DIRECTORY(Y + X)
由于../
或..
不是文件,因此它将转到路径B,作为目录加载
LOAD_AS_DIRECTORY(X)
- 如果X / package.json是文件,则 一个。解析X / package.json,并查找" main"场。
湾设M = X +(json主场)
C。 LOAD_AS_FILE(M)- 如果X / index.js是文件,请将X / index.js作为JavaScript文本加载。 STOP
- 如果X / index.json是一个文件,则将X / index.json解析为JavaScript对象。 STOP
- 如果X / index.node是文件,请将X / index.node加载为二进制插件。 STOP
醇>
按照该规则,它将按此顺序检查以下文件
1)../package.json
2)../index.js
3)../index.json
4)../index.node
答案 1 :(得分:2)
如果您需要目录,require
将尝试根据以下规则包含该目录中的模块:
如果X / package.json是文件,则 一个。解析X / package.json,并查找“main”字段 湾设M = X +(json主场)
C。 LOAD_AS_FILE(M)
2.如果X / index.js是文件,请将X / index.js作为JavaScript文本加载。 STOP
3.如果X / index.json是文件,则将X / index.json解析为JavaScript对象。 STOP
4.如果X / index.node是文件,则将X / index.node加载为二进制插件。停止
您很可能有一个如下所示的目录结构:
module/
index.js
src/
file-including.js
这将加载index.js
。您也可以将其写为require('../index.js')
甚至require('../index')
,它的功能也相同。
答案 2 :(得分:0)
使用var module = require('..');
和var module = require('../');
的结果相同。
都是从父目录加载的。