では、この「必要」とは何ですか?
require()
標準のJavaScriptAPIの一部ではありません。しかし、Node.jsでは、モジュールをロードするという特別な目的を持つ組み込み関数です。
モジュールは、すべてのアプリケーションを1つのファイルにまとめるのではなく、アプリケーションを別々のファイルに分割する方法です。この概念は、Cのinclude
など、構文と動作にわずかな違いがある他の言語にも存在します。 、Pythonのimport
、など。
Node.jsモジュールとブラウザJavaScriptの大きな違いの1つは、あるスクリプトのコードに別のスクリプトのコードからアクセスする方法です。
-
ブラウザのJavaScriptでは、スクリプトは
<script>
を介して追加されます エレメント。それらが実行されると、それらはすべて、すべてのスクリプト間の「共有スペース」であるグローバルスコープに直接アクセスできます。どのスクリプトでも、グローバルスコープで何でも自由に定義/変更/削除/呼び出すことができます。 -
Node.jsでは、各モジュールに独自のスコープがあります。モジュールは、それらを公開することを選択しない限り、別のモジュールで定義されたものに直接アクセスすることはできません。モジュールから物事を公開するには、それらを
exports
に割り当てる必要があります またはmodule.exports
。モジュールが別のモジュールのexports
にアクセスするため またはmodule.exports
、require()
を使用する必要があります 。
コードでは、var pg = require('pg');
pg
をロードします モジュール、Node.js用のPostgreSQLクライアント。これにより、コードはpg
を介してPostgreSQLクライアントのAPIの機能にアクセスできます。 変数。
ノードでは機能するのにウェブページでは機能しないのはなぜですか?
require()
、module.exports
およびexports
Node.jsに固有のモジュールシステムのAPIです。ブラウザはこのモジュールシステムを実装していません。
また、ノードで動作させる前に、
npm install pg
を実行する必要がありました。 。どうしたの?
NPMは、公開されたJavaScriptモジュールをホストするパッケージリポジトリサービスです。 npm install
は、リポジトリからパッケージをダウンロードできるコマンドです。
それはどこに置かれ、Javascriptはどのようにそれを見つけますか?
npm cliは、ダウンロードされたすべてのモジュールをnode_modules
に配置します npm install
を実行したディレクトリ 。 Node.jsには、モジュールが他のモジュールを見つける方法に関する非常に詳細なドキュメントがあります。これには、node_modules
の検索も含まれます。 ディレクトリ。