fujithuro.log

プログラマーの雑多な書き残しです

JavaScriptとかCSSについて整理

自分の中でフワフワしてて、毎回も調べてる言葉をちゃんと定着させるために少しずつ整理。

用語

ECMAScript

  • JavaScriptの標準規格。
  • ES6の時から毎年更新しようということになったのでバージョン表記が西暦になった。ES6=ES2015。
  • 今はES5~6くらいが主流。それ以上はブラウザが追い付いてない。

トランスパイル(transpile)

  • あるバージョンで記述されたJavaScript/TypeScriptから別のバージョンのJavaScriptを生成すること。
  • 新しすぎるとブラウザの種類やバージョンによっては対応していないので、広く対応している形式にする。

ポリフィル(Polyfill)

  • 古いブラウザでは実現できないAPIを、同等の機能を利用できるように補うための小さなライブラリみたいなもの。
  • IEをスタートラインに立たせる。ES5まで追いつかせる

バンドル(bundle)

  • ファイルを1つにまとめる。
  • 例えば、node_modulesにあるjsを一纏めにbundleして、HTML側ではそのファイルだけ読み込む、とかすると、モジュールが新しくインストールされてもいちいちHTML側を触る必要がない。

ミニファイ(minify)

  • サイズを小さくする。読み込みが早くなる。

プラットフォーム

Node.js

  • サーバーサイドで動くJavaScriptフレームワークやライブラリではなく、JavaScriptアプリケーションのプラットフォーム。
  • 非同期。I/Oの結果を待たないで処理を進める。
  • リアルタイムなアプリケーションに合う。SPAとか
  • 何かのイベントを受けて動き始める。
  • 例えばC10K問題の解決に使われる。ディスクへの書き込みには時間がかかって、それをCPUやメモリが待たないといけないのは時間の無駄。書き込みの命令だけ出して、結果を待たずにどんどん次の処理に行くことで、大量のリクエストがあってもすごく早く捌けるようになる。

パッケージ管理

npm

  • Node.jsのパッケージのバージョン管理ツール。
  • インストールしたパッケージはnode_modulesに入る。

yarn

  • JavaScriptのパッケージマネージャー。
  • npmに対して後発で、より速くて簡潔。
  • インストールしたパッケージは、やはりnode_modulesに入る。

タスク自動化ツール

gulp

  • Node.js を使ったタスク自動化ツールで、フロント周りのビルド(CSSJavascriptの結合(bundle)や圧縮(minify)、Sassのコンパイルなど)を任せられる。
  • Javaの世界でいえばGradleとかAntみたいな。
  • Gruntの後発。

Grunt

  • Node.js を使ったタスク自動化ツールで、フロント周りのビルド(CSSJavascriptの結合(bundle)や圧縮(minify)、Sassのコンパイルなど)を任せられる。
  • Javaの世界でいえばGradleとかAntみたいな。
  • gulpよりも先輩。

モジュールバンドラー

webpack

  • cssファイルのbundle化が簡単にできる。
  • gulpとかGruntが自力でもやれるけどwebpackの方が簡単にできる
    • と言いつつ、webpackもそんなに簡単じゃないので、簡単にするためのラッパーも出てきてる

トランスパイラー

Babel

  • ES6(2015)以上をES5に変換する

CSS関係

PostCSS

  • Node.js製の、CSSツールを作るためのフレームワーク
  • これ自体はただのCSSパーサー。
  • 今後標準になりそうなCSSの書き方でいける
  • こんな流れ

    • PostCSS: CSSを受け取って、ASTを作る。
    • プラグイン: そのASTを受け取って任意の操作をする
    • PostCSS: 操作後のASTを文字列に戻して、新しいCSSの出来上がり

SASS

  • CSSを拡張したメタ言語。プログラムっぽくcssを書けるので、書きやすいし保守性も上がる。関数や変数も使える。
  • そのままだとブラウザが認識してくれないので、gulpなどでCSSを書き出す(コンパイルする)必要がある。

  • 書き方は「SASS記法」と「SCSS記法」がある。

    • SASS記法
      • 本来のSassの記法。
      • 記述がRubyライクで、簡潔。
    • SCSS記法
      • SASSがCSSとの互換性が乏しかったので生まれた。
      • CSSの書き方がそのまま使える。

参考にさせて貰ったページ

gulpとbabelとwebpackというフロント開発3銃士

https://qiita.com/bakira/items/3c4e2d10aae085767817

Webpack の考え方について

https://mizchi.hatenablog.com/entry/2018/11/26/164523

フロントエンド知らない私のwebpack入門 その1

https://qiita.com/knjname/items/b8ca62c12238ade9c263

Node.js を5分で大雑把に理解する

https://qiita.com/hshimo/items/1ecb7ed1b567aacbe559