[ruby-on-rails] erb, haml 또는 slim : 어떤 것을 제안합니까? 그리고 왜? [닫은]

저는 Rails를 배우고 있으며 이러한 템플릿 엔진을 보았습니다. 나는 그들에 대한 경험이 없습니다 (단지 erb).

근데 초심자라서 정말 헷갈려요. 어떤 것을 제안하고 그 이유는 무엇입니까? Erb, Haml 또는 Slim? 다른 것보다 선호하는 이유를 알려주십시오. 다른 권장 사항이 있으면 알려주십시오.

편집 : 나는 여기서 우승자를 찾고 있지 않습니다. 나는 그들, 구문, 실행 속도 등에 대한 귀하의 의견을 듣고 싶습니다.



답변

ERB는 주로 일반 HTML에서 작업 할 웹 디자이너가 있고 햄 또는 슬림을 알지 못하는 경우에 좋습니다. 이런 식으로 그는 HTML을 작성할 수 있고 적절한 태그를 사용하여 루비 로직을 임베드 할 수 있습니다.

HTML과 루비 로직 모두에서 작업하거나 디자이너가 HAML과 같은 새로운 것을 배울 준비가되어 있다면 HAML을 선택하겠습니다. 루비 친화적이고 ERB보다 훨씬 더 읽기 쉽고 문자 수를 줄입니다.

예 (공식 HAML 사이트 에서 가져옴 ) :

ERB에서보기는 다음과 같습니다.

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

HAML에서는 다음과 같이 보입니다.

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

훨씬 더 깨끗해!

HAML과 SLIM의 차이점은 SLIM으로 작업 한 적은 없지만 맛의 문제라고 생각합니다. 두 구문을 모두 살펴보고 어느 것이 더 잘 보이는지 결정하십시오. 이 둘 (HAML / SLIM) 사이에 확실한 승자가 있다고 생각하지 않습니다.


답변

햄보다 슬림을 사용하는 두 가지 큰 장점 :

  1. Slim은 현재 haml보다 약 8 배 빠릅니다.

  2. Slim은 HTTP 스트리밍을 지원하지만 HAML은 지원하지 않습니다.

  3. Slim은 더 자연스러운 구문을 가지고 있습니다. a href="foo.html"


답변

내 머리 꼭대기에서 이것이 내가 생각 해낸 것입니다.

ERB :

장점

  • 기본 제공
  • 공백에 의존하지 않음
  • Ruby 코드가 뿌려진 HTML로 가장 낮은 진입 장벽 (HTML에서 오는 경우)
  • 대부분의 IDE의 렉서는 기본적으로 읽습니다.
  • DHH는 그것을 선호합니다
  • 레거시 앱은 아마도 여전히 그것을 사용하고있을 것입니다.

단점

  • 더 자세한
  • 헬퍼 및 뷰의 content_for 태그는 빠르게 벗어날 수 있습니다.
  • content_for 태그는 erb가 블록의 마지막 줄만 반환하므로 중첩 태그를 더 어렵게 만듭니다. 따라서 문자열에 추가 한 다음 반환해야합니다.

HAML

장점

  • 더 간결합니다. 닫는 태그 없음, 작은 화면에 적합
  • 시각적으로 깔끔한 구조
  • 헬퍼 메소드에서 haml을 활용하기 위해 헬퍼 (haml_concat, haml_capture)가 내장되어 있습니다.
  • 클래스 체인
  • # for divs 또는. 클래스 체이닝의 경우, JS 태그의 경우 : javascript

단점

  • 공백에 의존하여 때때로 파악하기 어려운 오류가 발생합니다.
  • 복잡한 태그는 일반적으로 “해시”형식에 의존해야합니다. (실제로 이것은 누군가에게 유연성을 보여주는 훌륭한 예라고 생각하지만 고통 스러울 수 있습니다.)
  • 보석으로 추가됨
  • 디자이너가 조정하는 데 어려움이있을 수 있습니다.
  • 일반 공백 경고 외에도 … 간단한 공백 오류 예. 들여 쓰기를위한 탭과 공백으로 인해 프로덕션에서 페이지 오류가 발생하여 정상적인 사양 / 테스트에서 포착하지 못할 수 있습니다. 도덕 : 뷰 테스트가 더 많이 필요할 것으로 예상하고 테스트가 뷰의 실제 렌더링을 테스트하고 있다고 확신하지 않는 한 미션 크리티컬 뷰에 haml을 사용하지 마십시오.
  • 느립니다 (erb보다)
    • 주의 : 이것은 우리가 말하는 루비 코드입니다. 만약 속도가 당신의 어플리케이션에서 블로킹 문제라면 루비에 대한 대안이 있습니다. 예 : haskell

답변

저에게 질문은 %모든 태그 |앞에 또는 모든 새 텍스트 블록 앞에 두겠습니까?

날씬한:

 tag(attr= "value")
  | text

Haml :

 %tag{attr: "value"}
   text

한 가지 더주의해야 할 사항 : haml은 새 줄 사이에 공백을 가정 하고 (haml에서 공백 제거 ) 슬림은 공백을 가정하지 않습니다 ( 여기여기 에 Slim에 공백 추가 ).


답변

https://github.com/scalp42/hamlerbslim- 성능 측면에서 Slim과 Erb를 승자로 보여주는 독립적 인 벤치 마크입니다 (슬림은 HTML 출력 크기도 줄이는 경향이 있음).

내 개인적인 의견은 전반적으로 Slim과 Haml이 유지 관리 측면에서 시간 (== 돈)을 절약 할 수 있다는 것입니다. Haml / Slim에 정통한 사람들이 귀하의 견해를 돌보는 경우에만 가능합니다.

그런 사람들이 없다면 Erb는 확실히 갈 길입니다. 세계 최고의 의지에도 불구하고 HTML / Erb로 작업 할 수 있지만 Haml / Slim을 완벽하게 찾을 수있는 매우 저렴한 사람들이 많이 있기 때문입니다. 신비.

무엇보다도이 사람들에게 Slim을 사용하도록 훈련 시키거나 최소한 그들에게 노출 시키도록 훈련시키고 “얻는”사람들의 수를 유지하십시오.


답변