みなさんこんにちは、現役エンジニアのサメハックです
アパレル企業でトップ販売員を経て
未経験からWebエンジニアに転職し、
現在正社員として5年働いています!
JavaScriptの解説シリーズです。
今回はexportとimportを使ったモジュール化について学んでいきましょう!
駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!
- モジュール化が何かわかる
- importとexportを使って他のJavaScriptファイルの関数・変数が呼び出せる
何度も使うものはモジュール化しよう!
importとexportを使ってモジュール化しよう
モジュール化とは
モジュールというのは、部品やパーツという意味です。
例えば、データを取得する関数を複数のJavaScriptファイルで使用する場合
すべてのファイルでイチからデータを取得する関数を叩くよりも、
データ取得モジュールを1つ作り、それを各ファイルで呼び出すほうが
効率的かつ、保守性が高いシステムとなります。
このように、何度も使用する処理やデータをまとめることをモジュール化といいます。
例えば上記のデータ取得処理に変更があった場合に、モジュールを改修するだけで済みますが、
全ファイルでベタ書きしていた場合、それら全てに変更を加える必要があって非効率だよ!
exportとは
exportとは、モジュールを公開するための記述です。
この記述をすることで、他のJavaScriptファイルから
モジュールを読み込むことが出来るようになります。
関数をexportする
export function 関数名(引数名) {
// 処理
}
変数をexportする
export const 変数名 = "値";
クラスをexportする
export class クラス名 {
constructor(引数) {
// 初期処理
}
}
まとめてexportする
function 関数名(引数名) {
// 処理
}
const 変数名 = "値";
class クラス名 {
constructor(引数) {
// 初期処理
}
}
// エクスポートしたいものをまとめて指定
export {関数名, 変数名, クラス名}
1つの機能のみをexportする
export default エクスポートしたいもの
これは、1つの機能だけexportする場合の記述です。
ケースバイケースですが、モジュール・部品という意味ではこの使い方が比較的好まれます。
importとは
importとはモジュールを読み込むための宣言です
モジュールをそのままimportする
import { モジュール名 } from "./モジュールのファイル名"
モジュールを複数importする
import { モジュール名1, モジュール名2 } from "./モジュールのファイル名"
別名でimportする
import * as 別名 from "./モジュールのファイル名"
// モジュールの呼び出し
別名.モジュール名
超重要!:HTML側の記述
moduleをimportするには、scriptタグにtype=”module”と記述する必要があります。
実際にモジュール化してみよう!
まず大前提として対象ファイルはこのように、
すべて同じディレクトリに格納されています。
- index.html → HTMLファイル
- myModule.js → モジュール化してexportするJavaScriptファイル
- script.js → モジュールを読み込む(import)するJavaScriptファイル
■ myModule/js
const myMessage = "こんにちは!";
const myFunction = (message, name) => {
alert(message + name + "です!");
};
// messageとmyFunctionをエクスポートする
export { myMessage, myFunction };
■ script.js
// myModule.jsの「すべてのexport」を「modules」という名前でインポート
import * as modules from "./myModule.js";
// modules・・・つまり、myModule.jsのmyFunction関数を呼び出し、
// 第一引数にmyMessageを渡す
modules.myFunction(modules.myMessage, "サメハック");
■ index.html
<html>
<body>
<!-- script.jsを外部モジュールをインポート出来るようにして読み込み -->
<script type="module" src="./script.js"></script>
</body>
</html>
このようにscript.jsが外部モジュールである
myModule.jsの関数と変数を使用することが出来ました。
まとめ
- モジュール化・・・何度も使用する処理やデータをまとめること
- export・・・モジュールを公開するための宣言
- import・・・外部モジュールを読み込むための宣言
- importを使用するにはscriptタグにtype=”module”の宣言が必要
満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈