4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】基本的なモジュール(ESM)の使い方について【まとめ】

Last updated at Posted at 2020-11-16

モジュール(ESM)とは

・ソースコードを整理、分割する仕組み
・ブラウザ上で動作
・ES6から導入
・import / exportを使用
・IEでは未対応

これを使用することにより、別ファイルで定義した変数や関数を扱うことができる

import

モジュールを読み込む

export

モジュールを出力

主な用途

例としてmoduleA.jsmoduleB.jsのファイルを作成。
moduleA.jsexportしたモジュールをmoduleB.jsimportします。

フォルダ構成
|--index.html
|--moduleA.js
|--moduleB.js

htmlファイルの準備

index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>Document</title>
  </head>
  <body><!-- ↓typeを"module"に。   ↓moduleB.jsを読み込む。 -->
    <script type="module" src="moduleB.js"></script>
  </body>
</html>


moduleA.jsの準備
適当な変数と関数を定義

moduleA.js

const hoge = 'ほげ';

const fuga = () => {
  console.log('ふが');
}

現状もちろんこれらの変数、関数はmoduleA.js内でしか使用できません。
これをexportを使いmoduleB.js内で使用できる様に準備します。

moduleA.js

export const hoge = 'ほげ';

export const fuga = () => {
  console.log('ふが');
}


moduleB.jsの準備

moduleA.jsで定義したhogefugaimportしています。

moduleB.js
import { hoge, fuga } from './moduleA.js'

console.log(hoge); // => ほげ
fuga()             // => ふが

できました!


ちなみにこうすることでimportした変数関数の名前を変更できます。

moduleB.js
import { hoge as h, fuga as f} from './moduleA.js'

console.log(h); // => ほげ
f()             // => ふが


オブジェクトとして格納することも可能。

moduleB.js
import *as moduleA from './moduleA.js'

console.log(moduleA.hoge); // => ほげ;
moduleA.fuga();            // => ふが;

デフォルトエクスポート

さっきまでのは名前付きエクスポートという機能でした。
デフォルトエクスポートもやってみます。

moduleA.js及びmoduleB.jsの記述を変更します。

moduleA.js

export default 'ほげ';

moduleB.js

import hoge from './moduleA.js'

console.log(hoge); // => ほげ

デフォルトエクスポートはモジュールごとにひとつしか作れません。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?