3

node.js は var foo=require(../) に遭遇したときにどのモジュールを探しますか?

現在のディレクトリから 1 つ上のディレクトリを検索するように見えますが、正確には何を検索し、何を行うのでしょうか?

おそらく、CのincludeまたはPython のimportとの類推があるでしょうか?

私はnode.jsから始めて、http://nodejs.org/api/modules.htmlを読んでいて 次 のようなgithubのサンプルコードに出くわしました

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

このコードは、npm を使用して Express をインストールした後、パスがグローバルである必要がある Express モジュール (ファイル) の変数Expressコンテンツを割り当てるように見えますが、モジュールのインストールには 2 つのタイプがあることは理解していますが、それは別の質問です。

しかし、変数trackerにはどのような内容が割り当てられているのでしょうか?

4

1 に答える 1

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 がファイルの場合、
    a. X/package.json を解析し、「メイン」フィールドを探します。
    b. let M = X + (json メイン フィールド)
    c. LOAD_AS_FILE(M)
  2. X/index.js がファイルの場合、X/index.js を JavaScript テキストとして読み込みます。止まる
  3. X/index.node がファイルの場合、X/index.node をバイナリ アドオンとしてロードします。止まる
于 2012-09-27T15:37:14.863 に答える