“그것을 구현하는 내 자신의 개인적인 이야기는 실제로 방법론의 요점을 준수하지 않았습니다. “모든 것들을 모듈로 모듈”의 함정에 빠지기가 매우 쉽고 제안 된 범주가 정확히 그 제안이라는 것을 잊어 버립니다. 가장 어려운 부분은 각 카테고리에서 자격이 무엇인지 이해하는 것입니다. 전 세계적으로 사용되는 기본 버튼은 .m-btn-primary라는 모듈입니까? 아니면 모듈에 사는 것이 있습니까? 방법론을 처음 사용하기 시작할 때와 레이아웃, 모듈 및 테마와 같은 것을 명확하게 정의하는 SMACS의 경우 혼란 스러울 수 있습니다. 나는 무언가를 멈추고 무언가가 속한 곳을 생각해야했던 몇 가지 상황에 빠졌지 만, 그것은 나에게도 긍정적이었고, 요점은 사람들이 쉽게 읽고 이해할 수있는 더 조직화 된 수업을 원한다는 것입니다.”.
Josh Hunt on bem
“처음으로 BEM을 사용하는 것은 종종 악몽이 아닌 것보다 더 자주 아닙니다. 처음으로 나는 .classes__about__five__levels__deep을 만들었습니다. BEM은 DOM 구조를 클래스 이름으로 일대일 매핑하는 것이되어서는 안됩니다.“BEM을 적용하기 어려운 것은 .wrapper 또는 .inner와 같은 스타일링을 위해 순수한 요소가 필요할 때입니다. .Article__inner (내부는 기사의 요소가 아님)를 갖는 것이 실제로 옳지 않습니다. 때때로 당신은 당신이 선택한 단어 (div.article__media img.article__img)로 창의력을 발휘할 수 있지만 다른 경우에는 Bem을 "파괴"하고 .article-wrapper 또는 .article-inner.
BEM 의 Hamish Taplin
“BEM의 가장 큰 도전은 추상화에 내재되어 있다고 생각합니다. 때때로 머리를 잡기가 어려울 수 있습니다. 추상화 할 수있는 패턴을 발견하려면 어느 정도의 계획이 필요하며 때로는 처음으로 물건을 발견하지 못할 때 리팩터를 리팩터링해야합니다. 이것은 개발에서 일반적이며 계획과 경험은 많은 도움이 될 수 있습니다.
"또 다른 고집 지점은 마크 업을 완전히 제어해야한다는 것입니다. 항상 불가능한 환경 (예 : .NET)에서 일하는 경우 어려울 수 있습니다."
해리 로버츠에 Bem
“BEM Naming은 GoodIdea ™이기 때문에 공포 이야기를 듣는 것은 매우 드 rare니다. 내가 생각할 수있는 가장 가까운 것은 연초에 정말 위대한 고객과 함께 일어났습니다. 그들은 더 나은 CSS 건축에 대한 많은 연구를하고 독서를 한 정말 부지런한 팀이었으며, 일주일의 훈련을 위해 거친 지점을 시도하고 다림질하기 위해 저를 데려갔습니다. 가장 거친 지점 중 하나는 BEM Naming을 구현하는 것이 었습니다. 불행히도, 그들은 BEM 명명에 대한 정말로 나쁜 조언을 주었던 기사 (영구적이지 않기 때문에 여기에 연결되지 않을 것입니다)를 읽었습니다. 근본적으로 잘못된 정보. 고객은이 조언을 편지에 따랐으며 실제로 몇 가지 문제를 일으켰습니다. Bem Naming이 해결해야 할 일은 그 어느 때보 다 더 엉키고 상호 연결되었습니다! 그러나 그것이 내가 알고있는 유일한 사건입니다.”
BEM의 BOB DONDERWINKEL
“글쎄, 나는 그것을 공포 이야기라고 부르지 않을 것입니다.) 그러나 나는 Kabem이라는 약간의 BEM 스캐 폴딩 도구를 만들었습니다. 내가 저지른 실수는 BEM CSS 클래스 이름을 여러 요소 (예 : Block__Element__ Element)로 사용하는 것이 었습니다. 주로 CSS 클래스 이름을 기반으로 멋지게 중첩 된 폴더 구조를 생성하는 데 도움이 되었기 때문입니다. 본질적으로 나는 CSS 클래스 이름으로 HTML 구조를 캡처하고 있었지만 실제로는 BEM이 조금 더 단단해져 필요하지 않습니다.
.
“또 다른 작은 Gotcha는 SASS로 할 수있는 것처럼 BEM CSS 셀렉터 중첩이 실제로 필요하지 않은 경우 CSS 특이성을 추가한다는 것입니다. BEM은 단일 클래스 이름으로 가장 잘 작동하므로 명심해야 할 것입니다.”
결론
모든 사람의 반응과 아이디어를 겪은 후, 가장 좋은 접근 방식은 하이브리드 인 것 같습니다. 모든 것에 대해 읽고, BEM과 SMACSS를 열린 마음으로 제공하고 CSS와 워크 플로우가 개선되는지 확인하십시오. 하나의 방법론을 선택할 필요는 없습니다. 몇 가지 방법론의 개념을 귀하와 귀하의 팀에 적합한 개념으로 결합하십시오. 도움이 필요하면 몇 가지 생각과 조언을 기꺼이 공유 할 개발자가 많이 있습니다.
크레딧
내 질문에 대답하고 생각과 경험을 공유 할 시간을 포기할만큼 친절한 다음 개발자들에게 매우 큰 감사를드립니다.
Alec Raeside - 웹 사이트, Twitter
Bob Donderwinkel - 웹 사이트, Twitter
Chris Wright - 웹 사이트, 트위터
Hamish Taplin - 웹 사이트, 트위터
Harry Roberts - 웹 사이트, 트위터
Josh Hunt - 웹 사이트, 트위터
BEM 및 SMACSS 에 대한 질문이 자주 묻습니다
BEM과 SMACSS의 주요 차이점은 무엇입니까?
BEM (블록, 요소, 수정 자) 및 SMACSS (CSS를위한 확장 가능 및 모듈 형 아키텍처)는 CSS를 구성하는 방법론입니다. BEM은 CSS를 쉽게 읽고 이해할 수있는 이름 지정 컨벤션이며 SMACSS는 CSS 조직에 규칙을 제공하는 스타일 가이드입니다. BEM은 사이트의 시각적 표현에 중점을두고 SMACSS는 구조와 레이아웃에 중점을 둡니다. BEM은 클래스에 특정 명명 컨벤션을 사용하는 반면 SMACSS는 스타일을 기본, 레이아웃, 모듈, 상태 및 테마의 5 가지 유형으로 분류합니다. BEM은 CSS 확장 성을 어떻게 향상 시키는가? BEM은 CSS를 향상시킵니다. CS에 명확하고 이해할 수있는 구조를 제공하여 확장 성. 특정 명명 규칙을 사용하여 다른 요소와 부모 블록 간의 관계를 쉽게 식별 할 수 있습니다. 이로 인해 큰 CSS 코드베이스를 쉽게 관리하고 확장 할 수 있습니다. 이는 충돌의 명명 가능성을 줄이고 코드를 읽고 이해하기 쉽게 만들 수 있습니다. SMACSS를 사용하는 장점은 무엇입니까? >. SMACSS는 CSS 구성을위한 일련의 지침을 제공하여 코드가보다 효율적이고 유지 관리하기 쉽게 만들 수 있습니다. 그것은 당신의 스타일을 분류하여 CSS를보다 모듈화하고 재사용 할 수있게 할 수 있습니다. SMACSS는 또한 CSS에서 동적 스타일을보다 쉽게 관리 할 수있는 상태 규칙의 사용을 촉진합니다. BEM과 SMACSS를 함께 사용할 수 있습니까?