はじめに

ES2015を用いて「1度だけ実行する関数をimportして使う」モジュールを作るための、備忘録です。
export defaultはclassの冒頭につけるやり方しか知らず、ファイルの中身を即時関数1つだけにしたときにどうすればいいかわかりませんでした。
検索してもうまくヒットしなかったので、備忘録です。

実装

サンプルのコードはPCかどうかを判定して、PCでなければtrueを返すという処理です。

before
const isMobile = function () {
  const ua = window.navigator.userAgent.toLowerCase();
  return /iphone|ipod|ipad|android/.test(ua);
};
module.exports = isMobile;

before.common
import isMobile from 'isMobile';

if(isMobile()){
console.log('spn');
}

このように書くと、importしている部分で毎回関数を実行することになります。
この機能の場合、最初に1度実行すれば毎回実行して確認する必要はありません。
なので、下記のように即時関数にすることで、実行回数を減らすことができます。

after
const isMobile = (() => {
  const ua = window.navigator.userAgent.toLowerCase();
  return /iphone|ipod|ipad|android/.test(ua);
})();
export default isMobile;
after.common
import isMobile from 'isMobile';

if(isMobile){
console.log('spn');
}

おわりに

自分の備忘録のために掲載しました。
もっと効率のよいやり方やパフォーマンスのいいやり方を知っている方がおりましたら教えてください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.