では、この「必要」とは何ですか?
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の検索も含まれます。 ディレクトリ。