【Node.js入門】exports / module.exportsによるモジュール機能の使い方まとめ!

今回は、Node.jsが持つモジュール化の機能について詳しく学習をしていきましょう!

「モジュール化ってどういう機能なの?」
「複数のファイルに分割する方法が知りたい」
「exports / module.exportsの使い方を学びたい」

このような内容も含めて、本記事では以下のような構成で解説していきます!

【基礎】「exports」とは?
【基礎】「exports」の使い方
【実践】「modeule.exports」について
【実践】requireによるモジュールの読み込み方
【まとめ】exportsの使い方まとめ

この記事で、exportsをしっかり学習してスキルアップを目指していきましょう!

>>> 今すぐ「exportsの使い方」を知りたい方はこちら

「exports」とは?

それでは、まず最初に「exports」について基本的な知識から身につけていきいましょう!

Node.jsには、モジュール化といってさまざまな機能を持ったプログラムを個別のファイルに分割することができます。

これにより効率よくコードを管理できるだけでなく、さまざまなユーザーが作成したプログラムを再利用しやすくできるわけです。

Node.jsにはこのようなモジュールを管理できるツール「npm」があり、世界中で便利なモジュールが公開されており誰でも無料で利用できるエコシステムがあります。

今回は、このようなモジュール化の作り方を中心に解説していきますのでぜひ参考にしてみてください!

「exports」の使い方

この章では、基本的なモジュール化の方法として「exports」の使い方を見ていきましょう!

主に、一般的な書き方や実際のモジュール作成方法について学んでいきます。

基本的な構文と書き方

まずは、exportsの基本となる書き方から見ていきましょう!

exportsを使うと、指定した値を外部のNode.jsファイルから読み込んで再利用することができるようになります。

次のサンプル例を見てください!

このように、exportsに続けて任意のプロパティ名を付与したうえで、外部ファイルから再利用したい値を設定すれば良いわけです。

この値は文字列・数値・配列・オブジェクト・関数など、さまざまなものを設定できます。

モジュールの作り方

早速ですが、実際にexportsを使って簡単なモジュールを作ってみましょう!

以下の例では、単純な文字列・オブジェクト・関数を使ってexportsしています。

この例では「exports.str」に文字列を格納し、「exports.obj」にオブジェクト「exports.func」に関数を格納していますね。

このように設定するだけでモジュール化されるので、あとはこのファイルを読み込めばいつでもこれらの値を再利用できるわけです。

※読み込み方法は後述します。

「module.exports」について

これまでexportsを使ってきましたが、実は類似のmodule.exportsを利用するのが一般的です。

使い方はほとんど同じで、以下のような形式になります。

そのため、例えばオブジェクトをexportsするには次のようになります。

前章のexportsの前にmoduleを付与しただけで、あとは特に変わりありません。

ただし、微妙に扱い方が異なる部分もあるので、もう少し詳しく見ていきましょう!

exports/module.exportsの違い

「exports」と「module.exports」の違いについて、最も分かりやすい例としてはプロパティを設定せずに値を直接格納できるかどうか?という点でしょう。

例えば、次のようなオブジェクトを格納する例を見てみます。

この例では、「module.exports」にプロパティ名を設定せずに値を直接格納しているのが分かりますね。

これは問題ないのですが、次のように記述すると上手くいきません。

この例では、「exports」にプロパティ名を設定せずに値を格納しています。

この場合はモジュール化とはならずに、外部から値を再利用することができません。

理由は簡単で、「module.exports」の場合はmoduleオブジェクトの中にあるexportsプロパティを参照していますよね?

exportsも同じようにデフォルト状態ではmoduleオブジェクトの中にあるexportsプロパティを参照しているのですが、値を直接格納してしまうとそれはただの新しいオブジェクトに変わってしまうからです。

つまり、「exports」という新しいオブジェクトを作成しているだけなので、モジュール化の機能は持っていないわけです。

このような理由から、一般的には「module.exports」を利用したモジュール化がよく使われています。

requireによるモジュールの読み込み方

さて、これまでexportsによってモジュール化の作り方を見てきましたが、このモジュールを読み込む方法も合わせて確認しておきましょう!

Node.jsでは「require」を利用することで、モジュールを簡単に読み込むことが可能です。

例えば、「sample.js」というファイル名で次のようなモジュールを作ってみます。

これは単純なオブジェクトをexportsしているだけですね。

このモジュールを読み込むには、次のようにrequireを記述すればOKです!

実行結果

requireの引数にモジュールとなる「sample.js」のファイルがあるパスを設定するだけです。

これにより、以降は変数「item」を利用して値を再利用できるわけです。

このreuqireにはさまざまな使い方があるのですが、その基本と応用を次の記事でまとめているのでぜひ合わせて参考にしてみてください!

【Node.js入門】requireの使い方とモジュールの作り方まとめ!
更新日 : 2018年10月30日

「exports」の使い方まとめ

最後に、exportsの基本的な使い方をまとめておきます!

exportsは任意のプロパティ名を設定して再利用したい値を格納することで、外部ファイルからでも簡単に利用できるようになります。

基本的には、次のように文字列・数値・オブジェクト・関数などを格納できます。

いずれも任意のプロパティ名を付与していることを確認してください。

ちなみに、類似の「module.exports」を使っても同じことができます。

両者の大きな違いは、プロパティ名付与せずに値を直接格納できるかどうか?という点になります。

この場合は問題なく動作しますが、「exports」に値を直接格納することはできません。

それは単に新しい「exports」というオブジェクトを作っているだけにすぎないからですね。

まとめ

今回は、Node.jsでexportsを使ったモジュール化の作り方について学習しました!

最後に、もう一度ポイントをおさらいしておきましょう!

・exportsは任意のプロパティ名を付与することでさまざまな値をモジュール化できる
・module.exportsも同じことが実現できてプロパティ名無しでもモジュール化できる
・exportsは必ずプロパティ名を付与しないと正しく機能しない

上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!

おすすめのコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:4/20(土),4/27(土)
  • 時間:14:00〜17:35終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

マサト

マサト

JavaScriptが大好きで、趣味も仕事もJavaScriptを中心に活動していたら、いつの間にかフリーランスになってました。
30代になってからプログラミングを始めた経緯があり、分からないことだらけだった経験を踏まえて、読者に分かりやすい記事制作をモットーにしています。
JavaScript以外の趣味は、旅をしながらの街歩きや登山など。