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명 이상) 이 기사를 공유하고 내 뉴스레터를 구독하여 이와 같은 멋진 콘텐츠를 더 많이 얻을 수 있습니다.
읽어주셔서 감사합니다 🙂