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

时间:2012-09-27 15:28:27

标签: javascript node.js

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

它似乎会从目前的目录中看到一个UP,但它究竟会找到什么并做什么?

或许在C中使用 include 或在Python中使用 import 进行类比?

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

var express = require('express')
  , tracker = require('../')

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

但是将哪些内容分配给变量 tracker

1 个答案:

答案 0 :(得分:9)

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

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

一个。 LOAD_AS_FILE(Y + X)
 湾LOAD_AS_DIRECTORY(Y + X)

<强> LOAD_AS_FILE(X):

  1. 如果X是文件,请将X加载为JavaScript文本。 STOP
  2. 如果X.js是文件,请将X.js作为JavaScript文本加载。 STOP
  3. 如果X.node是文件,请将X.node加载为二进制插件。 STOP
  4. <强> 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文本加载。 STOP
    3. 如果X / index.node是文件,请将X / index.node加载为二进制插件。 STOP