LoginSignup
1
1

More than 5 years have passed since last update.

ES2015 でのモジュールの書き方は?

Last updated at Posted at 2016-03-29

いろいろ方法はあると思うけど、何が良いのかが分からない。
とりあえず以下の条件で考える。

  • 複数のメソッドがある
  • 値を保持しない

値を保持するなら class 化するけど、
しないならインスタンスを作る必要がないので、
その場合のモジュールってどう書くのがベストかが気になる。

呼び出す側

main.js
const { addstr1, addStr2 } = require('./module');

addstr1('yamada'); // OK! yamada!!!
addstr2('tanaka'); // OK! tanaka???

呼び出される側

1. 単純にオブジェクトを渡す

記述量が少ない。

module.js
const addStr = (str) => {
  return `OK! ${str}`
};

module.exports = {

  addStr1: (str) {
    return addStr(`${str}!!!`);
  },

  addStr2: (str) {
    return addStr(`${str}???`);
  },

}

2. 即時関数で処理して渡す

ザ・モジュールパターンって感じ?

module.js
module.exports = (() => {

  const addStr = (str) => {
    return `OK! ${str}`
  };

  return {

    addStr1: (str) {
      return addStr(`${str}!!!`);
    },

    addStr2: (str) {
      return addStr(`${str}???`);
    },

  }

})();

3. class 作ってインスタンスメソッドを渡す

ES2015 だから class 使っちゃう?的なのり。

module.js
class Sample {

  addStr1(str) {
    return this.addStr(`${str}!!!`);
  }

  addStr2(str) {
    return this.addStr(`${str}???`);
  }

  // private
  addStr(str) {
    return `OK! ${str}`;
  }

}

const instance = new Sample();

module.exports = {
  addStr1: instance.addStr1.bind(instance),
  addStr2: instance.addStr2.bind(instance),
};

どれが良いのだろうか?
他にも方法があるとは思うけど。
全然わからん。

1
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
1
1