export・import と exports・require のまとめ
ちーずブログではimport
/ export
とexports
/ require
が混在しており、lintで怒られてた。
import
/ export
とexports
/ require
を書いてはいたものの、
何が違うのか、どのように使うのかが適切なのか理解してなかったので軽くまとめてみた。
export / import
ES6の構文。
export
export default
ファイルごとにデフォルトのエクスポートを1つだけ持つことができる。
エクスポートしたいclassやオブジェクトなどに対して、exprot default
をつける。
exprot default {
・・・
}
named export
複数exprot
することができる。
export const hogeFunc = () => {
・・・
}
// 複数export
const hoge = { hoge: 'hoge' };
const fuga = { fuga: 'fuga' };
export { hoge, fuga };
// export時に名前変更
export { hoge as namedHoge, fuga as namedFuga };
import
exprot
されたモジュールをインポートする。
// export defaultの呼び出し
import defaultExport from 'src/module.js';
//モジュールすべてをインポートする
//as モジュール名で名前空間として使える
import * as myModule from 'src/module.js';
//呼び出し
myModule.func();
// 指定import
import { hoge } fromt 'src/module.js'
// 複数import
import { hoge, fuga } fromt 'src/module.js'
// 名前変更
import { hoge as namedHoge, fuga as namedFuga } fromt 'src/module.js'
ベストプラクティス
色々調べたけどよくわからんかった。誰か教えて欲しい...
- 単一モジュールをexportする場合、
export default
を使う - 複数モジュールをexportする場合、
named export
を使う - オブジェクトをexport defaultするのはアンチパターン...?
- 単一値であるものが推奨されるらしい
module.exports / require
Node.jsのCommonJSの構文。
module.exports
module.exports
もしくはexports
に代入してエクスポートする。
function hoge() {
・・・
}
module.exports = hoge;
require
module.exports
されたものをインポートする
var hoge = require('./src/module.js');