node.js中的require(../)如何工作?

Sin*_*int 3 javascript node.js

node.js在遇到var foo = require(../)时会查找哪些模块?

它似乎会从目前的目录中查找一个UP,但它究竟会寻找和做什么?

也许在C中包含include或在Python中导入有类比?

我一直在开始使用node.js并阅读 http://nodejs.org/api/modules.html 并在github上找到示例代码,例如

var express = require('express')
  , tracker = require('../')
Run Code Online (Sandbox Code Playgroud)

使用npm安装express后,这段代码似乎分配了快速模块(文件)的变量快速内容,其路径必须是全局的,这看起来很容易理解,虽然我知道有两种类型的模块安装,但这是另一个问题.

但是什么内容被分配给变量跟踪器

sup*_*ova 9

这取决于该目录中的内容.

如果X以'./'或'/'或'../'开头:

一个.LOAD_AS_FILE(Y + X)
b.LOAD_AS_DIRECTORY(Y + X)

LOAD_AS_FILE(X):

  1. 如果X是文件,则将X加载为JavaScript文本.停
  2. 如果X.js是文件,请将X.js作为JavaScript文本加载.停
  3. 如果X.node是一个文件,则将X.node加载为二进制插件.停

LOAD_AS_DIRECTORY(X):

  1. 如果X/package.json是一个文件,
    那么.解析X/package.json,并查找"main"字段.
    湾 设M = X +(json主场)
    c.LOAD_AS_FILE(M)
  2. 如果X/index.js是文件,则将X/index.js加载为JavaScript文本.停
  3. 如果X/index.node是文件,则将X/index.node加载为二进制插件.停