【JavaScript】メモ
サーバサイドエンジニアがフロントエンドエンジニアに 色々質問してきたのでそのまとめ。
webpackのお仕事
ES6 → ES5にコンパイルしている 1~2年前ES6非対応ブラウザが多く、それらに対応するため
indexファイルにまとめている import/exportなどファイル別だったのに なぜ一つにするのか? →ファイルを分けると、HTTPリクエストがとんで重くなるから
コンポーネント/クラス
いつも実装着手するとき、何を考えてますか? →コンポーネントを考える
例えば〜一覧の例だと、indexTableっていう一覧テーブルを 一つのコンポーネントとして考える
component // クラス定義 クラスの名前、ファイルの名前とまとめて各
小さいコンポーネント? →3つの選択肢から選ぶセレクトボックスとか
ルートコンポーネント// indexPage は 1つのページに1つしかない ルートコンポーネント.find('');
jQuery
DOM操作はすごく重い DOM操作 = getElementbyId("")など なので、高速化のために今業務では innerhtmlで全部ぶちこんでる
関数について
$(() => { });
これは
document.ready(() => { });
と同意義
なので、例えば
$(() => { }); $(() => { });
などを同じファイルで繰り返していると、無意味
グローバル空間について
全部に影響する、$(() => {});などでくくられていない空間のこと window は全て、あらゆるもの情報を持っている
関数の中で、変数をdefineすればその空間のみ、 グローバル空間に影響NGのため、即時関数で実行していた 今はwebpackがやってくれているので グローバル空間は無視してok
セレクタについて
取得の仕方ってどうやってますか? idで取ってくるのが一番はやいのでid最優先、 1ページにいくつもでてくるようであればクラス指定をする。
.on('click')と.click()について
.on('click')は後からappendされた要素も対応するが .click()は対応しないので、 基本的にはon('click')しか使わない
$(div .classA)など複数指定のやつ
両方探すのに時間かかるので、 div.find(classA)など絞ってからにする
※このあたりは、 jQuery高速化で調べればでてくる
thisについて
ES5→ES6で、thisの意味が変わった
ES5 は例えばイベントが起これば、 そのイベントまるごとのことをthisと指していた ES6ではthisは一つ外側を指している。 イメージでいくとphpのクラス。
そのお陰で、外側のプロパティにアクセスしやすくなった