今回は、Node.jsで別ファイルのモジュールを読み込むことができる「require」について解説していきます!
「requireってどんなことができるの?」
「Node.jsで別のJSファイルを読み込む方法が知りたい」
「モジュールってどうやって作るの?」
このような疑問も含めて、本記事では以下のような内容で解説していきます!
【基礎】「require」の使い方
【実践】「require」の仕組み
この記事で、requireをしっかり学習してスキルアップを目指していきましょう!
「require」とは?
まず最初に、「require」について基本的な知識から身に付けていきましょう!
requireは、モジュール化されたJSファイルをNode.jsから効率よく読み込んで利用できるようにしてくれます。
このことからも分かるように、Node.jsにはモジュールという仕組みが備わっているのでファイルを自由に分割しやすいわけです。
ファイルを分割することでコードが整理しやすいだけでなく、モジュールをパッケージにして配布することで誰でも便利な機能を拡張できるのが特徴です。
本記事では、これらのエコシステムを実現しているのがrequireについて学習していきます。
「require」の使い方
この章では、「require」の基本的な使い方について見ていきましょう!
一般的な書き方や実際のモジュールを読み込む方法について学んでいきます。
基本的な構文と書き方について
まずは、もっとも基本となるrequireの書き方について見ていきましょう。
一般的にrequireを使うケースというのは、パッケージを利用する時か別ファイルのモジュールを読み込む時が多いでしょう。
これらのパッケージ名やファイルのパスをrequireの引数へ指定するだけで利用することができます!
var 変数 = require(パッケージ名) var 変数 = require(モジュールのファイルパス)
requireを実行して変数へ代入することで利用できるようになります。
これは簡単に言うと、JavaScriptにおけるインスタンス化の感覚に近いものがありますね。
Node.jsのモジュールを読み込んでみる
それでは、実際にrequireを使ったサンプルを見てみましょう!
例えば、npmを使って「express」のパッケージを次のようにインストールしたとします。
$ npm install express
すると、Node.jsではrequireを使って読み込む必要があるわけです。
var express = require('express');
これで、変数「express」を使ってフレームワークを利用することができます。
また、自作のファイルや別ファイルのモジュールを読み込む場合は次のようにファイルパスを指定します。
var sample = require('./sample.js');
このようにパスをrequireの引数へ設定すれば、モジュールを読み込んで使うことができます。
「require」の仕組み
この章では、requireをさらに詳しく見ていきましょう!
主に、簡単なモジュールを作成してrequireで読み込むまでを学んでいきます。
exportsでファイルをモジュール化する
まずは、Node.jsで提供されているモジュールの仕組みがどのようになっているのかを見ていきましょう!
基本的に、ファイルをモジュール化して別のファイルから読み込めるようにするには「exports」を使います。
つまり、他のファイルから利用したいデータをすべてexportsで設定するというわけです。
次のサンプル例を「sample.js」というファイル名で保存しましょう!
var item = 'リンゴ'; var getName = function() { console.log(item + "です"); } var obj = { name: 'メロン', price: 500, store: '東京店舗' } exports.item = item; exports.getName = getName(); exports.obj = obj;
この例では、単純な変数「item」と関数「getName」、オブジェクト「obj」を作成しています。
そして、それぞれのデータを別のファイルからも利用できるように「exports」しているのが分かりますね。
これにより、読み込み先のファイルでrequireすることでデータを再利用できるというわけです。
requireでパスを指定してファイルを読み込む
先ほど作成したファイル「sample.js」を実際にrequireを使って読み込んでみましょう!
var sample = require('./sample.js');
このようにファイル名のパスをrequireの引数へ指定すればOKです!
以降は変数「sample」を使ってモジュールのデータにアクセスすることができるようになります。
次のサンプル例を見てください!
console.log(sample.item); sample.getName; console.log(sample.obj);
実行結果
リンゴ リンゴです { name: 'メロン', price: 500, store: '東京店舗' }
それぞれ「sample.js」でexportsした変数や関数・オブジェクトが取得できているのが分かりますね。
基本的にはパッケージ化されているファイルも構造自体はだいたい同じ仕組みになっています。
このように柔軟な仕組みが提供されているため、Node.jsでは簡単に機能を拡張できるパッケージが多数配布されているのです。
まとめ
今回は、Node.jsからモジュールを簡単に読み込める「require」について学習しました!
最後に、もう一度ポイントをおさらいしておきましょう!
・requireはパッケージや別ファイルのモジュールを読み込める
・モジュールは別ファイルから利用したいデータをexportsする
・requireはexportsされたデータを利用できるようにしてくれる
上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!