node.js WEB WEBフロントエンド開発

Node.jsのrequire関数のモジュール読み込みについて

投稿日:2017年11月13日 更新日:

Node.js のモジュール機構について(JavaScript の場合)

ディレクトリ構造

Node.js のパッケージマネージャーである npm を使う場合、プロジェクト ディレクトリは以下のような構成になります(gulp をインストールした場合)。

 

  ・プロジェクト ディレクトリ
     ├ node_modules
         └ gulp
              ├package.json(※2)
              ├index.js
              ...
          ...
     ├package.json(※1)
     ├gulpfile.js
     ├sub.js(※3)

 

  • プロジェクト ディレクトリ直下にある package.json(※1) は、このプロジェクトで使用している npm モジュールへの参照が書かれています(npm install コマンドの--saveで書き込まれます)。
  • node_modules ディレクトリの下に、npm でインストールした各モジュールのディレクトリが作られます。
  • gulp ディレクトリの下にある package.json(※2) には、gulp モジュールが依存しているモジュールの一覧をはじめ、gulp モジュールの構成情報が書かれています。
  • sub.js は gulpfile.js の中で使われるファイルだと思ってください。

 

モジュールのインポート

Node.js では require 関数でモジュールを読み込みます。

  • 1 行目は gulp モジュールを読み込んでいます。
  • パスを指定せずモジュール名だけを書くと、node_modules ディレクトリ下にあるモジュールを読み込みます。
  • この場合 Node.js は、node_modules/gulp ディレクトリの中の package.json を見に行きます。
  • package.json に main エントリーがあれば、それがこのモジュールのエントリー ポイントになりますので、そのファイルを実行します。
  • gulp の場合は main エントリーが無いので、この場合、index.js が実行されます。
  • 2 行目はプロジェクト ディレクトリ下にある sub.js(※3) を読み込んでいます。
  • npm のモジュールではない他の JavaScript ファイルを読み込む場合、同じディレクトリにあっても、パス(./)を付ける必要があります。
  • 拡張子 .js は付けても付けなくても構いませんが、一般的には付けません。

スポンサーリンク

スポンサーリンク

-node.js, WEB, WEBフロントエンド開発

執筆者:

関連記事

SystemJSを使ったWEBフロントエンド開発

当セクションはSystemJSを使ったWEBフロントエンド開発について説明します。JavaScriptをロードするための最も基本的な方法はscriptタグで実現することですが、SPAを構築するフロント ...

lite-serverを使った開発サーバの構築

Lite-Serverのパッケージを使った開発サーバの構築方法を説明したいと思います。開発用のタスクはnpm-scriptsを使用します。 記載した実行環境は以下の通りです。Node.jsのインストー ...

JavascriptのEventオブジェクトについて

1.function(e) {} の引数eの意味合い 引数eはイベントオブジェクトです。イベントハンドラ、イベントリスナとして設定したコールバック関数が受け取ることができる。 JavaScriptの関 ...

TypeScriptのソールファイル分割

TypeScriptのソールファイル分割の方法についてまとめました   目次1. <reference>によるグローバルモジュールによる方法2.import/exportによる外 ...

TypeScriptのモジュールについて

モジュールについてまとめました。 (内部モジュール) 共通の関数などをグローバル空間に記載したくない場合などに使用する。   (外部モジュール) 別ファイルとして外部にある機能を利用する仕組 ...


プロフィール
管理人です。 業務プログラムに勤しむ人です プロフィール詳細


検索
no image

2021/02/23

aaaaa

no image

2021/01/29

C++言語

no image

2021/01/29

ASP.NET Core

2020/05/11

Laravel

2020/05/05

requireについて