2017-02-22 39 views
2

我一直在寻找通过一些实例的NodeJS和我遇到了以下几点:NodeJS require('..')?

var module = require('..'); 
var module = require('../'); 

我明白了什么需要做的,但我不明白,当它写成这样它做什么。有人可以向我解释吗?

+0

你能给我提供github的例子吗? – slorenzo

回答

2

这是https://nodejs.org/api/modules.html

需要(X)所定义的从模块在路径中的规则ÿ

  • 如果X始于 './' 或“/ '或'../'
    a。 LOAD_AS_FILE(Y + X)
    b。 LOAD_AS_DIRECTORY(Y + X)
  • 由于../..不是一个文件,它将进入路径B,加载作为目录

    LOAD_AS_DIRECTORY(X)

    1. 如果X/package.json是一个文件,
      a。解析X/package.json,并查找“main”字段。 b。让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加载为二进制附件。 STOP

    通过该规则,它将检查以该顺序

    1)../package.json

    2)../index.js

    3)../index.json

    4)../index.node以下文件

    1

    如果你需要一个目录,require将尝试从包括基于这些规则,目录中的一个模块:

    如果X /的package.json是一个文件,
       一个。解析X/package.json,并查找“main”字段。
        b。让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加载为二进制附件。 STOP

    最有可能你有一个看起来像这样的目录结构:

    module/ 
        index.js 
        src/ 
        file-including.js 
    

    这将加载index.js。你也可以把它写成require('../index.js')甚至require('../index'),它的功能是一样的。