JavaScriptのimport,export

経緯

minimistを使いたかったが、公式はCommonJSのrequireの書き方だったので
ESモジュールでの書き方を調べた

結論

minimistをESモジュールで読み込むには

import minimistModule from "minimist";

とすればminimistを好きな名前(minimistModule)で使える

詳細

モジュールとは

1つのjsファイルに全部書くと大変なので、機能ごとにjsファイルをわけて書き、
それを読み込んでメインのjsファイルで使う
その分割したjsファイルをモジュールとしている
モジュールの中身は変数や関数などを定義する
1つのファイルの中に複数定義しておくことも可能

読み込む側と読み込まれる側

読み込む側はメインファイル
読み込まれる側はモジュール(機能ごとにわけたjsファイル)
ざっくり書くとこうなる

メインファイル側 モジュール側
CommonJS require module.exports
ESモジュール import export

import,export

import,exportには「名前つき」と「デフォルト」の2種類がそれぞれある

名前つき

モジュールごとに複数の機能(関数や変数など)をexportでき、その中から必要なものを指定してimportすることができる

名前つきexport

export const name = "foo";
export const hello = () => console.log("Hello");

または

const name = "foo";
const hello = () => console.log("Hello");
export { name, hello };

名前つきimport

import { name, hello } from "パス名";
別名をつける

定義した機能名(変数名、関数名など)を別名でexport,importしたいときはas 別名のように書く
後述するデフォルトでも別名はつけられる

export側で別名をつける
export { name as fooName, hello };
import側で別名をつける
import { name, hello as displayHello} from "パス名";
全てをimport
import * as 指定の名前 from "パス名";

とすると指定した名前にモジュールの全てのexportを取得できる
指定の名前.機能名でその機能を使える

デフォルト

モジュールに1つの機能がありそれをデフォルトとして設定している

デフォルトexport

export default function () {
  console.log("Hello!");
}

または

const hello = () => {
  console.log("Hello!");
}
export default hello;

デフォルトimport

import displayHello from "パス名";
console.log(displayHello);
// exportしたhelloモジュールをdisplayHello(好きな名前)として使用

注意

  • 名前つきimportは、指定する機能が1つでも{ }をつけること

  • デフォルトimportなら{ }いらない  別名をつけるときは{ }が必要

  • 名前つきexportでas defaultとするとデフォルトimportできるが、その際default asで別名をつけてimportする必要がある

  • パス名は 同じディレクトリ内でも./をつけること

  • npmでインストールしたモジュール(node_modules内のモジュール)は、パス名の部分をモジュール名にするだけで参照可能

minimist

minimistのコードも見てみたが難しく断念
ただデフォルトで機能が設定されているようだったので、単純にデフォルトimportでできた

おわりに

完全未経験から現在フィヨルドブートキャンプで学習中。
自分で気になったところの記録(メモ)です。
間違い等あればご指摘いただければ幸いです。

参考リンク