2016-09-20 10 views
2

私たちのチームは角度ベースの大規模なプロジェクトに取り組んでおり、さまざまなコントロール(ナビゲーション、入力、テキストエリア、テーブル、ボタンなど)用に独立した小さなコンポーネントを作成して、プロジェクト。角度成分用のサス構造

この場合、スタイルシートをどのように整理するかはわかりません(今は1つのCSSファイルにコンパイルされているsassを使用しています)。すべてのコンポーネントが独立していて、独自の別のsassファイルを持っている必要がある場合は、異なるベンダーのCSS(たとえばMDLを使用している)のスタイルを使用して、CSSの継承のように整理します。

特定のコンポーネントが独自のディレクトリにある独自のSASSファイルでのみ使用するすべてのCSSを記述すると、さまざまなコンポーネントに多くの重複スタイルが存在します。このような場合に共通の解決法はありますか?

アドバイスをいただきありがとうございます。

+1

私の場合は私が実際には独立したスタイルシートを書くのですかしかし、関数、ミックスイン、変数などを独立したファイルにインポートしています。このように、各コンポーネントは他のコンポーネントに依存しません。他のコンポーネントにも依存しません。これは他のプロジェクトでも再利用できるためです。 – Chrillewoodz

答えて

3

私が取り組んでいるプロジェクトでは、コンポーネント内に個々のスタイルシートを使用していましたが、共通のスタイルシートがアプリケーション内にあります。

- app 
    - assets 
     - css 
      main.scss 
      buttons.scss 
      forms.scss 
      grid.scss 
      typography.scss 
     - images 
     - fonts 
    - components 
     - component-a 
      component-a.ts 
      component-a.scss 
     - component-b 
      component-b.ts 
      component-b.scss 

この場合のコンポーネントSASSには、そのコンポーネントのSASSのみを含める必要があります。 (あなたがまだの場合)

それは角度2

+0

これは私がそれを行う方法でもあります。たとえば、フォントサイズや色などのすべてをスタイルするフォーム要素のファイルを持つことができます。 – Chrillewoodz

+1

ありがとうございます。この場合、コンポーネントのSASS内でいくつかのスタイルを使用したい場合、その中に一般的なCSSをインポートして、たとえば再利用したいスタイルを拡張する必要があります。この場合、コンポーネントのSASS内にいくつかの不要なスタイルを含めることはできませんか?それはベストプラクティスと考えられていますか? また、別のコンポーネントの中にいくつかの一般的なスタイルをインポートすると、最終的にコンパイルされたCSSの中に同じスタイルの重複がたくさんあります。これを避ける方法はありますか? ありがとうございます。 –

+0

コンポーネントSASSは、そのコンポーネント*のスタイルのみにする必要があります。コンポーネントのスタイルを変える必要がある場合は、コンポーネント内に構成クラスを作成します。 .component {color:white; } 。コンポーネント - 赤色{カラー:赤; } – itsphilz

1

Component Styles上に読み取るために、それ価値があるだろう、私は一部ににSCSS分割することをお勧めします。

  1. 変数の定義は、関数やミックスイン(再利用可能なものはすべて)
  2. グローバルですべてのスタイル。このようなフォント・サイズ、形のスタイル、グリッドとしてので、部品

には、アプリケーションのための1つのグローバルスタイルシートを提供し、コンポーネントの特定のスタイルをカプセル化することができますこの方法をカプセル化することができる

  • コンポーネントの特定のスタイルに。 再利用可能なもの(変数、関数、およびミックスイン)をすべて分離することにより、コンポーネントに含めるコンポーネントscssでのみ使用されるスタイルで使用できます。下記のご意見や調査に基づき

  • +0

    ありがとうございます。しかし、上記のコメントでも触れたように、グローバルスタイルをインポートしてコンポーネントのSASSファイル内の一部を拡張する必要がない場合、コンポーネント内部にスタイルをいくつか含めることはできませんか?また、最終的にコンパイルされたCSSでは、同じグローバルスタイルを別のコンポーネント内にインポートすると、重複するスタイル定義がありませんか? –

    +0

    私は重複したスタイルを持っていました。しかし、コンポーネントにロードされたスタイルはコンポーネント内のhtmlにのみ影響します。したがって、コンポーネント固有のスタイルをカプセル化し、他のコンポーネントのスタイルを変更することはできません。ビルドプロセスの中で、このスタイルをコンポーネントパッケージに追加することもできます。遅延読み込みを使用する場合は、グローバルスタイルを小さくしてコンポーネント固有の部品をコンポーネントに移動し、コンポーネントとともに要求に応じてこのスタイルをロードすることができます。 – DaSch

    +0

    アドバイスをいただきありがとうございます。 –

    1

    、私たちは一緒に行ったプロジェクトの構造は(我々はまた、MDLを使用している)スタイル組織の面である:

     
    - app 
        - assets 
         - css 
          reset.scss 
          helpers.scss (some global styles) 
          mdl.scss (native MDL styles) 
          variables.scss (global variables) 
        - components 
         - component-a 
          component-a.scss (will import component-a-variables.scss here) 
          component-a-variables.scss (variables used only for this component) 
         - component-b 
          component-b.ts 
          component-b.scss (will import component-b-variables.scss here) 
          component-b-variables.scss (variables used only for this component)

    +0

    こんにちは。 'component-b-variables.scss'が' component-b.scss'でのみ使用されている場合、なぜそれらを別々のファイルに入れますか?それらは再利用されていないので、ローカル変数を変更するために2番目のファイルを開く必要はありません。これは、TypeScriptクラスのプロパティを別のファイルに入れてからインポートするようなものです – Ryan

    関連する問題