Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Vue.jsで CSS Modulesを 使ってみた @mascii_k WeJS 34th @RAKSUL
Slide 2
Slide 2 text
自己紹介 ● 小柳 昌生(Masaki Koyanagi) ● ビザスク エンジニア ● Twitter: @mascii_k
Slide 3
Slide 3 text
お話ししたいこと ● Vue.js で CSS Modules 使ってみたら、デザイ ナーとエンジニアの分担がうまくいった話
Slide 4
Slide 4 text
きっかけ
Slide 5
Slide 5 text
デザイン事情 ● すでにVue.jsを導入しているプロダクトでグロー バルCSSにしたところ、デザインが壊れた ● CSSに関する規約はデザイナー任せになっていた ○ CSSはエンジニアが手をつけにくい存在に
Slide 6
Slide 6 text
デザインを守りたい ● 今度こそデザインもコンポーネント指向にして、 スタイルをカプセル化する ● エンジニアがCSSの規約を決める ○ エンジニアも手をつけやすい状態にする
Slide 7
Slide 7 text
どうやってカプセル化するか?
Slide 8
Slide 8 text
Scoped CSSか? Vue.jsなのでScoped CSSで良いと思っていたが... ● 既存CSSと同居させる方針のため、Scoped CSSで は予期せぬスタイルが当たる可能性があった ● 親コンポーネントと子コンポーネントで同じ class名を用いると予期せぬスタイルが当たるこ とがあることも判明した
Slide 9
Slide 9 text
Scoped CSSでは
Slide 10
Slide 10 text
CSS Modulesでは ● .title のようなセレクタが .HogeComponent_title_1UHoE に変換される ● 既存CSSとの同居はCSS Modulesの方がしやすい ● :class="$style.title" がちょっとだけきもい?
Slide 11
Slide 11 text
詳しい比較・注意点はQiitaで! https://qiita.com/mascii/items/3202b9e18fd4a7366ac1
Slide 12
Slide 12 text
CSS Modules で得られたもの
Slide 13
Slide 13 text
デザイナーとの分担がしやすく ● エンジニアが仮枠のコン ポーネントを用意 ● デザイナーが仮枠にマーク アップとスタイルを組む ● エンジニアがコンポーネン トを分解する
Slide 14
Slide 14 text
コンポーネントを分解 ● スタイルについてコンポーネントの外への影響が ないことと、外からの影響受けてないかが明瞭に ● コンポーネントをスタイルが崩れることなく機能 単位に分割できた
Slide 15
Slide 15 text
ネーミングルールに頭使わなくなった ● グローバルCSS, Scoped CSSのようにclass名の ネーミングルールを意識しなくて良くなった ● デザイナーも「CSS Modules好き」とのこと! ● エンジニアもclass名の変更を積極的にできるよ うになった
Slide 16
Slide 16 text
今後の展望
Slide 17
Slide 17 text
より協業しやすくしたい ● デザイナーが想定したコンポーネントの分け方 と、エンジニアが想定した分け方は少しずれる ○ 認識合わせのために Storybook を入れてコン ポーネントを管理したい
Slide 18
Slide 18 text
まとめ ● Vue.jsを使っていてデザイナーがスタイルを組ん でいるならCSS Modulesは良さそう! ● スタイルを組めないエンジニアでも、デザインを 守るために考えて行動することができる!
Slide 19
Slide 19 text
We are Cascading Style Sheeters!
Slide 20
Slide 20 text
ご清聴ありがとうございました