Upgrade to Pro — share decks privately, control downloads, hide ads and more …

フロントエンド研修2021【21新卒技術研修】/2021-frontend-training

 フロントエンド研修2021【21新卒技術研修】/2021-frontend-training

21新卒技術研修で実施したフロントエンド研修の講義資料です。
動画:https://youtu.be/dPPu2WnjIaQ
リポジトリ:https://github.com/yami-beta/frontend-bootcamp-demo

21新卒技術研修全体のまとめ記事
https://medium.com/mixi-developers/a0bcdbf9bca0

MIXI ENGINEERS

April 27, 2021
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ブラウザでの JavaScript スコープに注意 • 基本は関数スコープ ◦ 昔は var くらいしか無かった ◦

    最近は let, const がある • プログラム直下はグローバルスコープ ◦ 単純にファイル直下で変数宣言すると別ファイルから読み出せる 読み込み順に注意 • ファイル間で依存がある場合は依存関係順に読み込む
  2. 仕様から見えてきた課題 • *.js の依存関係解決 ◦ HTML に script タグを羅列するのは大変 •

    ファイル数 ◦ ファイル数を減らすとロード完了までが優位になる傾向 (ファイルサイズとの兼ね合いもあるため一概には言い切れないものの) 同時取得数の制限によるページロードのパフォーマンス低下が主な課題 → ファイル結合というアプローチが取られた
  3. ファイル結合 利用頻度は低下 • HTTP/2 ◦ 対応した CDN • <link rel=”preload”/>

    による先読み キャッシュヒット率を考慮すると、むしろ結合しないほうが有利な場合も
  4. 仕様から見えてきた課題 • *.js の依存関係解決 ◦ HTML に script タグを羅列するのは大変 •

    ファイル数 ◦ ファイル数を減らすとロード完了までが優位になる傾向 (ファイルサイズとの兼ね合いもあるため一概には言い切れないものの) 同時取得数の制限によるページロードのパフォーマンス低下が主な課題 → ファイル結合というアプローチが取られた
  5. webpack • *.js 以外のファイルの import を可能に • CSS ファイルの場合 ◦

    css-loader が CSS ファイルの依存関係を解決 ◦ style-loader が <style> タグを <head> タグの 子要素に追加する JavaScript を生成 • webpack Module を扱う ◦ ECMAScript Modules だけではない • webpack への強い依存には注意 ◦ 仕様に無い挙動を実現できてしまうため
  6. 開発ツールの変遷まとめ リソースの取得の最適化 → grunt, gulp のようなタスクランナーの活用 → HTTP/2 や preload

    の活用 JavaScript の依存関係解決 → Node.js 由来の require を持ち込んだ bundler → 標準となった ECMAScript Modules の活用
  7. UI ライブラリ|状態管理の複雑化 課題: ブラウザ上で扱う状態が複雑化 → jQuery で状態に合わせて dom の書き換えを行う手法に限界が来ていた Backbone.js

    が MVC を持ち込んだように、他領域の設計手法を用いた試み → UI ライブラリ(フレームワーク)の激動の時代 → フロントエンドが早すぎるといわれる場合はこの辺を指していることが多そう
  8. UI ライブラリ|紹介 React A JavaScript library for building user interfaces

    Vue The Progressive JavaScript Framework Angular The modern web developer's platform
  9. UI ライブラリ|jQuery jQuery はどうなったの? • 状態 → view の一方向の反映にあまり向いていない ◦

    自由に dom を触れてしまうので ◦ 宣言的 UI ライブラリとの組み合わせも不向き • jQuery の機能の一部は JavaScript 自体に入った
  10. Single Page Application 単一の Web ページを読み込み、表示内容は fetch 等で取得したデータを用いて 書き換えを行うアプリケーション •

    例: body タグ以下が全部空の状態でサーバから HTML が返却される ◦ 中身は JavaScript で組み立てられる