Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby 템플릿 엔진:ERB, HAML 및 슬림

ERB는 템플릿 엔진입니다.

템플릿 엔진을 사용하면 HTML과 Ruby를 혼합할 수 있습니다. 데이터베이스의 데이터를 사용하여 웹페이지를 생성할 수 있습니다.

ERB는 뷰를 렌더링하기 위한 Rails의 기본 엔진입니다.

<블록 인용>

참고:Rails는 ERB 대신 erubi라는 구현을 사용합니다. Ruby 표준 라이브러리의 클래스입니다.

이 기사의 뒷부분에서 배우겠지만 ERB를 사용하기 위해 Rails가 필요하지 않습니다.

하지만 먼저 :

ERB의 구문, Ruby 프로젝트에서 ERB를 사용하는 방법 및 HAML과 같은 다른 템플릿 엔진과 비교하는 방법을 소개합니다.

해보자!

Embedded Ruby(ERB) 튜토리얼

ERB 템플릿 .html.erb로 끝나는 파일입니다. 또는 .erb 확장자.

ERB 템플릿 안에 작성하는 모든 것은 HTML입니다.

특별한 태그를 사용하지 않는 한!

예시 :

Hello <%= name %>!

<%= %> 태그는 내부에 있는 Ruby 코드를 평가하여 템플릿 엔진으로 대체됩니다.

문자열 보간과 같습니다!

<%= %>의 등호를 확인하세요. .

이는 ERB가 이 태그의 콘텐츠를 렌더링하도록 지시합니다. .

ERB에서 루프 또는 if 문을 작성하려면 ERB가 필요하지 않은 것을 렌더링하지 않도록 등호를 생략하고 싶습니다.

올바른 ERB 태그를 사용하지 않으면 오류가 발생할 수도 있습니다.

예시 :

<% if @favorite_food == "chocolate" %>
  Are you a chocolate lover? Here are some of our best PREMIUM chocolate bars!
<% else %>
  Here are our top 10 snacks that people bought this month.
<% end %>

이것은 ERB if 문입니다. , 일반 Ruby if 문과 유사하지만 이 페이지가 사용자를 위해 렌더링될 때 출력으로 평가 및 대체될 수 있도록 특수 템플릿 구문으로 둘러싸여 있습니다.

여기에 ERB 루프가 있습니다. :

<% @books.each do |book| %>
  <%= book.title %>
  <%= book.author %>
  
<% end %>

책 배열이 주어지면 책 사이에 줄 바꿈이 있는 모든 책이 인쇄됩니다.

Rails를 사용하는 경우 연결된 컨트롤러 작업을 호출할 때 이 템플릿을 렌더링합니다.

레일 없이 ERB 사용

Rails 외부에서 ERB를 사용하여 보고서 및 정적 웹사이트를 구축하려면…

할 수 있습니다 :

require 'erb'

Book     = Struct.new(:title, :author)
template = ERB.new(File.read('template.erb'))

template.result_with_hash(books: [Book.new("test"), Book.new("abc")])

@books를 대체해야 합니다. books과 함께 이 작업을 수행하려면 템플릿에서.

Rails는 "변수 바인딩"이라는 메타프로그래밍 트릭을 사용합니다.

이것이 Rails가 컨트롤러의 인스턴스 변수를 템플릿과 공유하는 방법입니다. 그러나 해시를 사용하여 Rails 없이 ERB를 사용하려는 경우(with result_with_hash method)가 더 깨끗한 솔루션입니다.

어떻게 생각하세요?

템플릿 엔진 비교

지금 :

다양한 템플릿 엔진을 비교해 보겠습니다.

Tilt gem을 사용하여 이러한 모든 엔진에 액세스할 수 있습니다. 틸트는 패러데이와 같은 어댑터 보석입니다.

:

require 'tilt'
Tilt::ErubiTemplate.new("test.erb").render

require 'tilt/haml'
Tilt::HamlTemplate.new("test.haml").render

require 'slim'
Slim::Template.new("test.slim").render

다음은 다양한 구현 간의 벤치마크입니다. :

Comparison:
     erubi:     5786.0 i/s
       ERB:     4438.8 i/s - 1.30x  slower
      Haml:     1340.0 i/s - 4.32x  slower
      Slim:      724.1 i/s - 7.99x  slower

HAML 구문은 다음과 같습니다. 다음과 같이 보입니다:

%head
  %title Ruby Templating Engines
  = 123 * 2
%body
  - foo.each do |bar|
    %p
      This Is Cool

일반 HTML과 다르기 때문에 익숙해져야 합니다.

더욱 간결한 것은 Slim의 구문입니다. :

head
  title Ruby Templating Engines
  = 123 * 2
body
  - foo.each do |bar|
    p
      | This Is Cool

Slim은 콘텐츠의 여러 줄 블록에 파이프 문자를 사용하지만 Haml에서는 필요하지 않습니다.

Github 저장소 수준에서 비교를 살펴보겠습니다.

REPO STARS LAST_COMMIT LATEST_RELEASE CREATED_DATE
제레미에반스/에루비 255 2019-11-05 14:09:06 2019-09-25 15:44:36 2016-11-10 22:42:44
haml/haml 3461 2019-12-27 10:51:59 2019-08-06 12:01:09 2008-02-11 22:55:26
슬림 템플릿/슬림 4898 2019-12-15 23:55:23 2018-09-02 23:54:10 2010-09-13 01:32:07

어떤 것을 사용해야 할까요?

대부분 개인 취향인 것 같아요.

하지만 한 가지 분명한 것은 :

특정 프로젝트에 대해 하나를 선택하고 해당 엔진을 사용하여 모든 템플릿을 작성하십시오.

믹스 앤 매치하지 마세요.

저는 ERB 템플릿을 고수하는 것을 좋아합니다...

올바른 편집기 스니펫 및 지원을 사용하면 추가로 작성하는 작업이 그리 많이 필요하지 않습니다.

다른 엔진으로 이동하려는 경우 변환기(ERB에서/로)도 사용할 수 있습니다.

요약

Ruby의 템플릿 엔진에 대해 배웠습니다!

아직 구독하지 않은 경우(구독자 9000명 이상) 이 기사를 공유하고 내 뉴스레터를 구독하여 이와 같은 멋진 콘텐츠를 더 많이 얻을 수 있습니다.

읽어주셔서 감사합니다 🙂