2016-11-14 5 views
1

これらの2つの文は同じですか?特定のファイルではなくディレクトリが必要なノード

const deviceModule = require('..').device; 

const deviceModule = require('../device'); 

私はパラメータとしてモジュールが必要であると思っていました。どのようにディレクトリを提供できるのか、.deviceは何をしていますか?

私がnode.jsとjavascriptをよりよく理解できるように助けてくれる人に感謝します。

+0

私はあなたの質問を編集しました。タイトルにコードを入れないでください! –

答えて

4

require('..').deviceは、親ディレクトリのindex.jsが必要で、そのファイルからdeviceを取得します。

あなたは次のような構造だったのであれば:index.jsは以下を有する

- index.js 
- /foo 
- - bar.js 

を:

module.exports = { 
    device: "baz" 
}; 

を次にbar.jsrequire("..").deviceはあなたに"baz"を与えるだろう。


Here is the specification for loading a directory:

LOAD_AS_DIRECTORY(X) 
1. If X/package.json is a file, 
    a. Parse X/package.json, and look for "main" field. 
    b. let M = X + (json main field) 
    c. LOAD_AS_FILE(M) 
2. If X/index.js is a file, load X/index.js as JavaScript text. STOP 
3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP 
4. If X/index.node is a file, load X/index.node as binary addon. STOP 

だからあなたの例では、それ以下となります。package.jsonため

  1. 外観とmainプロパティを取得し、次にステップた場合、それは
  2. が存在する場合は、そのロード1が存在しない場合、ロードするとindex.jsが存在する場合は
  3. ステップ2が存在しない場合、それは
  4. が存在する場合
  5. 、それはステップ4が存在しない場合、それはあなたが必要とファイル・ディレクトリをモジュールを使用することができます
+1

ありがとうございました! – ctrax

+0

@ctraxアップ/ダウン矢印の下のチェックマークをクリックして、私の答えを受け入れることを忘れないでください。これは、私の答えが解決策であることを他の人に知らせるとともに、助けてくれた報酬として私にいくつかの担当者を与えます。あなたは受け入れのためにいくつかの担当者を取得します!誰もが勝つ:) –

0

を存在する場合、それはindex.nodeをロードしますindex.jsonをロードします。

1-すべてのファイルを名前とともに要求するのに役立ちます。ファイルの絶対パスを与える必要はありません。
2-一度に複数のファイル。

関連する問題