CSS Modulesとは?

大規模化するCSSの問題点

Christopherは以下をあげています。

1. グローバルネームスペース
 -> スタイルはグローバルスコープなので、全てに影響がある。JSでグローバル変数は懸念されるのにCSSは許容されている。
2. 依存性
 -> ネストすることによるスコープ。パフォーマンスや再利用性が低下する。
3. デッドコードの削除
 -> どのスタイルがどのコードに影響するか測れない。
4. 縮小
5. 定数の共有
6. 非決定論的な解決
7. 分離

そしてこれらはjavascriptを使ってスタイリングすれば解決すると言いました。
しかしそれでは問題もあるため、この課題に立ち向かって出来上がったのが、CSSモジュール。
CSSモジュールとは

スコープがローカルを約束

各ファイルが別々にコンパイルされるため、スコープがローカルになり、他ファイルへのスタイル影響がなくなる。
そのため、複雑なスタイル名や、複数指定、などが不要となり、シンプルに設計できる。
BEMのような複雑なスタイル名は不要

どうやって実現しているの?

Javascriptで、requireやimportでcssを読み込んで使うことができる。
実際のクラスは一意が約束された名前で自動生成される。

コンポジション

sassのextendのようにinclude指定が可能

CSSモジュールの使い方

1. npm install css-loader でインストールして使う。
2. webpackでcss-loaderを読み込む


Fatal error: Uncaught Error: Call to undefined function set_post_views() in /home/jszk/desnote.com/public_html/wpjs/wp-content/themes/the-thor-child/single.php:658 Stack trace: #0 /home/jszk/desnote.com/public_html/wpjs/wp-includes/template-loader.php(78): include() #1 /home/jszk/desnote.com/public_html/wpjs/wp-blog-header.php(19): require_once('/home/jszk/desn...') #2 /home/jszk/desnote.com/public_html/index.php(17): require('/home/jszk/desn...') #3 {main} thrown in /home/jszk/desnote.com/public_html/wpjs/wp-content/themes/the-thor-child/single.php on line 658