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

Vue.js × CSS Modules でコンポーネント設計してみた話

Sho Ezawa
August 22, 2019

Vue.js × CSS Modules でコンポーネント設計してみた話

2019/08/22 に開催した VisasQ Engineering Meetup #3 での発表資料です。

VisasQ Engineering Meetup #3
https://visasq.connpass.com/event/134479/

Sho Ezawa

August 22, 2019
Tweet

More Decks by Sho Ezawa

Other Decks in Technology

Transcript

  1. 自己紹介 glico Sho Ezawa ( ) / @glico800 ビザスク Webチームに所属


    フロントエンドやUIが好き
 妻・リクガメ・シマリスの4人家族 ?
  2. 前提 既存のページに作ったコンポーネントを埋め込む  山田 太郎 個人プラン  1 アドバイスする 

    依頼する  案件管理  スポットコンサルの依頼をしたい方は、気になる分野のアドバイザーを 探してみましょう。たくさんのアドバイザーから提案を受け取りたい場合 は、ビザスク上で公募することも可能です。 アドバイザーを探す アドバイザーとして活躍したい方は、 職歴やビジネス経験を記入することで、指名相談が届きます。 プロフィールを編集 ステータス アラート 更新日時 タイプ 金額 相談相手 タイトル 案件一覧 ここがコンポーネント
  3. CSS Modules を選んだ理由    外からは影響を受けてしまう
 しっかりカプセル化 コンポーネント外のスタイルから影響を受けず、
 かつ外へも影響を与えないようにしたい

    Scoped

    CSS は外への影響はないが、
    CSS Modules ならコンポーネントの
    スタイルを できる .button { } .button { } .button { } .button { } .button { } .button { }
  4. CSS Modules とは CSS をモジュール化 ローカルスコープになる - CSS Modules は

    して構成する
 ための仕組み
 - 全てのクラス名とアニメーション名がデフォルトで

  5. どうして? 参考:SFC style ordering · Issue #808 · vuejs/vue-loader ·

    GitHub
 https://github.com/vuejs/vue-loader/issues/808
 コンポーネントの依存関係を追従する CSSの実現が困難

 前提:CSS は詳細度が同じなら基本的に後から
    読み込まれたスタイルが優先される


  6. - ファイル数や依存が少なめ
 - 複雑になりやすい 案2:props でスタイル切り替え 案2を採用! ファイル数が爆発しない
 依存が少ないのは大事
 -

    バリエーションが増えても - コンポーネント指向なので - 複雑になりやすいのは工夫次第で抑止できそう
 - デザイナーさんも LGTM してくれた
  7. まとめ コンポーネントの 
 スタイルを外から完全に切り離せる class名に悩む時間が減る - Vue.js × CSS Modules

    の構成は のが良い
 - 既存環境をコンポーネント指向に移行していく場合
 ので相性◎
 - 完全に1から作るなら Scoped CSS
 でも十分かも