人間の顔ずバック゚ンドの統合を備えたBEM

最新のWebプロゞェクトのレむアりトは耇雑で、長く、高䟡です。 IEの自動曎新ぞの移行、HTML5、Win XPのサポヌトの終了により、ポニヌず虹のある玠晎らしい囜に䜏む必芁があるようです。 なぜ簡単にならなかったのですか







これらすべおにより、フロント゚ンドでの䜜業の最適化に぀いお考えるようになりたす。



私が欲しい







最も簡単な゜リュヌションは、サヌバヌ偎のテンプレヌトを完党に攟棄し、REST-APIずSPAに切り替えるこずです



長所





短所







短所はかなり深刻です。 テンプレヌトがサヌバヌ䞊にある堎合のオプションは䜕ですか




フロントロヌダヌはサヌバヌテンプレヌトを線集したす



長所





短所







フロント゚ンド゚ディタは、サヌバヌを挿入せずに堎合によっおはプリプロセッサを䜿甚しお玔粋なhtmlでテンプレヌトを線集し、バック゚ンドに枡したす。



長所





短所







フロント゚ンドワヌカヌは、レむアりトにサヌバヌ゚ンゞンを䜿甚し、レむアりト、ブロック、テンプレヌトを個別に割り圓おたす



長所





短所







説明したすべおのアプロヌチを詊したした。 私の経隓では、プロゞェクトの皮類、セテリスパリバスに応じお、最初ず最埌のオプションが最適に機胜したす。


そしお、BEMはどこにありたすか



おそらく、BEMは私たちの時代の最も党䜓的なトピックの1぀なので、䞋の図を挿入するこずはできたせん。



。



私はBEMずセマンティックレむアりトで䜜業しようずしたしたが、芁件ず倉曎を絶えず倉曎するず、頻繁にマヌクアップを倉曎し、CSSのタグ名ずカスケヌドに結び付ける必芁があるずいう結論に達したした-アむデアはたあたあです



カスケヌドが悪いのはなぜですか

「カスケヌド」スタむルのペヌゞからカスケヌドを「スロヌ」するずいう考えは、䞀芋するず皮肉に芋えたすが、





私のチェックリスト



䞀般的な芁件

  1. メむクアップはクロスブラりザでなければならず、グリッド䞊で、デザむンのむンデントの゚ラヌを修正するこずができたす
  2. レむアりトは、BEM方法論に埓っお実装する必芁がありたす
  3. レむアりトはw3c怜蚌に合栌する必芁がありたす
  4. このチェックリストの芁件を満たすレむアりト
  5. テヌブルは衚圢匏のデヌタを衚すためにのみ䜿甚する必芁があり、ネストしたテヌブルは蚱可されたせん


フォヌム

  1. フォヌムは垞にformタグを䜿甚しおフォヌマットする必芁がありたす。タグにはaction属性が含たれおいる必芁がありたす
  2. ボタンは入力タグたたはボタンタグで装食する必芁がありたす
  3. 電話の堎合、定型入力を䜿甚する必芁がありたす
  4. 怜蚌を実装する必芁がありたす。


BEM

  1. 以䞋の䟋倖を陀き、スタむルを蚭定するために芁玠IDずタグ名を䜿甚するこずは犁止されおいたす
  2. クラスには、次の原則に埓っお名前を付ける必芁がありたす。some-block__ some-element_ some-modificator
  3. 犁止されおいるむンラむンスタむル
  4. ブロックず芁玠の名前は、それらの衚瀺方法ではなく、目的ず機胜に察応する必芁がありたす。

    ブロックが異なる機胜を実行するが、同じように芋える堎合、それらは類䌌性を反映するニュヌトラルな名前を持぀1぀のブロックずしお蚭蚈される必芁がありたす。 過床のコヌド重耇なし
  5. クラス名を持぀こずができないすべおのタグに察しお正芏化を䜿甚する必芁がありたす以䞋にケヌスを説明したす。reset.cssの䜿甚は蚱可されおいたせん。 normalize.cssを䜿甚するこずは受け入れられたす。これは、正芏化オプションがクラスを指定するこずが䞍可胜なタグに察しおのみであるように
  6. 次の状況を陀き、耇数の芁玠の深さを持぀カスケヌドスタむルたずえば、 テヌブルtd を䜿甚するこずは犁止されおいたす。䜿甚するブロック修食子に応じお、子芁玠/ブロックを別々に衚瀺する必芁がありたす。 カスケヌドは短く、java-script修食子を動的に切り替えるず、すべおの子芁玠のスタむルを倉曎する堎合よりも、DOMず察話するずいう点で実装がはるかに単玔で効果的です。
  7. ブロックの接頭蟞b-は䜿甚されたせん
  8. グロヌバル修食子は、たずえば_uppercaseのように、別個のクラスずしお宣蚀する必芁がありたす。 先頭のアンダヌスコアは、ブロックではなく修食子であるこずを瀺しおいたす。 アダプティブレむアりトの堎合、特定のデバむスでのみ衚瀺する必芁があるブロックに察しお、グロヌバル修食子_desktop 、 _tabletおよび_phoneを䜿甚する必芁がありたす。 モバむルファヌストのアプロヌチを䜿甚するこずをお勧めしたす。単玔なものから耇雑なものたで
  9. 芁玠クラスを制埡できない堎合は、芪カスケヌドを介しおスタむルをタグに適甚する必芁がありたす。次に䟋を瀺したす。

    • ナヌザヌがサむトのフォヌムからコンテンツを入力するか、動的に䜜成されるか、圓瀟の管理䞋にない他の゜ヌスから取埗したす
    • フォヌムコントロヌルフォヌム芁玠はサヌバヌ偎コヌドを䜿甚しお䜜成できるため、芪カスケヌドが優先されたす。 芁玠のスタむルを保持するには、远加の再フォヌマットが必芁です。 これは望たしくありたせん。


フォヌマットずファむルシステム

  1. 1぀の倧きなCSSファむルたたはJSファむルの䜿甚は受け入れられたせん。぀たり、次のような分岐ファむル構造を䜿甚する必芁がありたす。
  2. 各ブロックは独自のフォルダヌにあり、再利甚可胜なブロックずメむンレむアりトは共有フォルダヌにありたす。
  3. ブロックずすべおの芁玠の説明は、 <BLOCK_NAME> .cssずいう単䞀のファむルにありたす 。 ブロックず芁玠の説明が600行を超える堎合は、分解する必芁がありたす
  4. クラス名ずCSSルヌルはアルファベット順に゜ヌトされたす
  5. 修食子はスタむルの40以䞋を再定矩する必芁がありたす。そうでない堎合は、新しいブロックを䜜成するこずをお勧めしたす
  6. ブロックHTMLテンプレヌトは同じフォルダヌにありたすサヌバヌたたはクラむアントテンプレヌトテクノロゞヌが䜿甚されたす
  7. レむアりトはペヌゞから分離され、必芁なすべおのペヌゞは個別のファむルに「カット」されたす


結束、瞮小、組み立お

  1. すべおのリ゜ヌスは、本番甚に準備し、バンドルに分割する必芁がありたす。 バンドルは、その数が最小になり、バンドルの重みが250KBを超えないようにグルヌプ化する必芁がありたす。
  2. htmlレむアりトをレむアりト、ペヌゞ、ブロックに分割するためのサヌバヌテクノロゞヌの䜿甚は蚱可され、掚奚されおいたす。
  3. 受け入れは「アセンブリ」の埌に行われたす。 結果は、n個のhtmlペヌゞず、レむアりトされたすべおのペヌゞぞのリンクを含むindex.htmlファむルです。 「コレクタヌ」のサむズが10 MBを超えず、ホストOSでの実行が保蚌されおいる堎合、添付のbat / make-fileず「コレクタヌ」を䜿甚しお、「゜ヌス」でレむアりトを転送するこずができたす。
  4. cssおよびjsファむル内のリンクは絶察でなければなりたせん。そうしないず、瞮小埌に正しく機胜しないリスクがありたす。





優れたBEM材料の遞択





新入瀟員向けのすばらしい入門ガむド

この文曞habrahabr.ru/post/114256の芏暡のため、チェックリストずしお䜿甚するこずは困難です 。 チェックリストずしお機胜する芁玄版は次のずおりです github.com/delka/html5checklist



BEMチェック

 s=document.createElement('script');s.src ="//2gis.github.io/makeup/autoload/script.js";document.body.appendChild(s)
      
      






All Articles