import-export

javascriptimport,export

javascriptでimportを行う時は、importできるメソッドを明示的にexportする必要があります。

default export

各モジュールに1個だけ指定することができるexport方法。

const add = (n,m) => n+m;
export default add;

default import

default exportをしたメソッドは、import ~~ from ファイル名(モジュール名)で読み込むことができます。
~~の部分はimport時に自由に決めることができます。

import addimp from './calc.js'
console.log(addimp(1,3));//4

名前付きexport

default exportは1個だけしかexportができないので、複数したい場合は名前付きexportを行います。

const add = (n,m) => n+m;
const minus = (n,m) => n-m;
const mul = (n,m) => n*m;
const div = (n,m) => n/m;

export default add;
export {minus,mul,div};

名前付きimport

importも基本的に同じような記述です。
asを使えば、好きな名前で読み込むこともできます。
※asはexportでもできるので、必ずメソッド名でexportしなくても良い

import add , {minus , mul , div as wari} from './calc.js'
console.log(add(1,3));//4
console.log(minus(6,1));//5
console.log(mul(2,3));//6
console.log(wari(4,2));//2

import * from ファイル名

*を使えば、一括で読み込むことができます。

import * as calc from './calc.js';
console.log(calc);
実行結果
[Module] {
  default: [Function: add],
  div: [Function: div],
  minus: [Function: minus],
  mul: [Function: mul]
}

使う時はこう。普通の書き方ですね。

import * as calc from './calc.js';
console.log(calc.default(1,3));
console.log(calc.minus(6,1));
console.log(calc.mul(2,3));
console.log(calc.div(4,2));

defaultがちょっと気持ち悪いので、defaultだけ別で読み込んでみます。

import add , * as calc from './calc.js';
console.log(add(1,3));
console.log(calc.minus(6,1));
console.log(calc.mul(2,3));
console.log(calc.div(4,2));

この例だとこっちのほうが気持ち悪かったな…。

集約

複数のモジュール読み込みたいとき、全部のimportを読み込むのは大変…ってことで、読み込みたいモジュールを集約することができます。

calc

const add = (n,m) => n+m;
const minus = (n,m) => n-m;
const mul = (n,m) => n*m;
const div = (n,m) => n/m;

export {add,minus,mul,div};

hello

const hello = (name) => `Hello${name}`;
const smallHello = (name) => `hello...${name}`;
const bigHello = (name) => `Hello!!!!!${name}`;
export {hello,smallHello,bigHello};

imp

export from ファイル名(モジュール名)を使うと、指定したものを再exportできるので、これを複数書きます。

export * as calc from "./calc.js";
export * as hello from "./hello.js";

main

impを読み込んで使います。

import * as imp from "./imp.js";
console.log(imp);

実行結果

[Module] {
  calc: [Module] {
    add: [Function: add],
    div: [Function: div],
    minus: [Function: minus],
    mul: [Function: mul]
  },
  hello: [Module] {
    bigHello: [Function: bigHello],
    hello: [Function: hello],
    smallHello: [Function: smallHello]
  }
}

ちゃんと使ってみる

import * as imp from "./imp.js";
console.log(imp.calc.add(2,3));//5
console.log(imp.hello.hello("おはし"));//Helloおはし

終わり!wsl2のコンソールからvimで書いて動かしながらやってたら疲れった…。