default export vs named export
miyamonz.iconはnamed export派だったが、細かい理由を忘れたので調べ直す
観点がいろいろある
そもそもモジュールがどうあるべきか
アプリケーションコードかライブラリか
バンドラをどの程度触るようなことをしているか、必要があるか
今回は、平均的なアプリケーションコードを想定する
理由
import側がrename, typoしてほしくない
名前の変更というリファクタリングがimport側に反映されない
名前、命名は利用者にとって最も身近な仕様書、説明記述領域なので、内部のmoduleが定めるべき
利用者側が勝手に決めるのはよくない。renameするなら、renameする意図がわかるように書くべき
ただ、VS Codeだとわりとdefaultで引っ張ってきたやつの名前もちゃんとrenameしてくれたりするぽいんだよな
多分同名だったら察してくれるのだろう
CommonJS周辺
平均的なアプリケーションでは起きないが、file system routingとか、バンドルが絡む処理のときに死にがち
複数の変数をobjectにまとめてdefault exportするとtree shakingが効かない
commonjs周りで苦しみが発生しない限りはどうにもクリティカルなものが無いんだよな
弱い理由
名前の補完
VS Codeどっちでもできる
anonymous default exportは無理
再export
そもそも再exportがどうなの、という話がある。自分は避けてる
アプリケーション、ツールの都合で使うものはそれに従う
参考文献
これは、ファイルというモジュールのべき論の話で、named exportのまま、exportをできるだけ1つに押さえればいいだけの話で、主張としては弱い
トランスパイラの問題
じゃあおめえが全部のトランスパイラの問題解決して回れるんか?!ああ?って話である
名前の部分、eslintを持ち出しているが、eslintを使わなくてもnamed exportなら型、バンドラで防げるから要らない。
回避方法を提案しているのであって、default exportが良いことの説明にはなっていない
この記事、いいねが妙に多く、初心者がその数字を権威とみなしてdefault exportに従ってしまいそう