web-dev-qa-db-ja.com

node.jsプロジェクトで使用されるindex.jsは何ですか?

ディレクトリ内のすべてのファイルを要求するニースの方法( node.jsはフォルダー内のすべてのファイルを要求しますか? )以外に、index.js主に使用しますか?

48
alh

フォルダーをNodeのrequire()に渡すと、エンドポイントのpackage.jsonを確認します。定義されていない場合、index.jsをチェックし、最後にindex.node(c ++拡張フォーマット)をチェックします。そのため、index.jsがモジュールを要求するためのエントリポイントである可能性が高いです。

こちらの公式ドキュメントをご覧ください: http://nodejs.org/api/modules.html#modules_folders_as_modules

また、ディレクトリ内のすべてのファイルを要求する方法を尋ねます。通常、それらのファイルへのカプセル化されたインターフェースを公開するindex.jsのあるディレクトリが必要です。これを行う方法はモジュールごとに異なります。しかし、フォルダを含めるときにフォルダの内容を含めたいと考えてください(これはベストプラクティスではなく、考えられるよりも少ない頻度で表示されます)。次に、ディレクトリ内のすべてのファイルを同期的にロードするindex.jsを使用し(エクスポートを非同期に設定すると通常、ひどいバグが発生します)、次のようにmodule.exportsに添付します。

var path = require('path'),
    dir = require('fs').readdirSync(__dirname + path.sep);

dir.forEach(function(filename){

    if(path.extname(filename) === '.js' && filename !== 'index.js'){
        var exportAsName = path.basename(filename);
        module.exports[exportAsName] = require( path.join( __dirname, filename) );
    }

});

しかし、そのパターンを使用したい人はほとんどいません-ほとんどの場合、index.jsを次のようにしたいです

var part1 = require('./something-in-the-directory'),
    part2 = require('./something-else');
....
module.exports = myCoolInterfaceThatUsesPart1AndPart2UnderTheHood;
40
MattNewton

通常、他の言語では、Webサーバーは特定のファイルを探して、優先順位で/のようなディレクトリにアクセスするときに最初にロードします。これは従来、インデックスまたはデフォルトです。 phpではindex.phpになるか、単なるHTMLではindex.htmlになります

Node.jsでは、Node自体がWebサーバーであるため、index.jsに名前を付ける必要はありませんしかし、人々が理解しやすいどのファイルを実行するか最初のです。

index.jsは通常、アプリの起動、ルーティング、およびアプリケーションの他の機能を処理し、機能を追加するために他のモジュールを必要とします。 WebサイトまたはWebアプリを実行している場合、Apacheのような従来の役割を置き換える基本的なHTTP Webサーバーにもなります。

11
Steven Leggett

Node.jsが必要なモジュールを探す方法を説明する良い記事があります https://medium.freecodecamp.org/requiring-modules-in-node-js-everything-you-need-to-know-e7fbd119be8 、フォルダーとindex.jsファイル

モジュールはファイルである必要はありません。 node_modulesの下にfind-meフォルダーを作成し、そこにindex.jsファイルを配置することもできます。同じrequire( 'find-me')行は、そのフォルダーのindex.jsファイルを使用します。

~/learn-node $ mkdir -p node_modules/find-me
~/learn-node $ echo "console.log('Found again.');" > node_modules/find-me/index.js
~/learn-node $ node
> require('find-me');
Found again.
{}
>
1
onmyway133