Haml
패러다임템플릿 엔진
설계자햄프턴 캐틀린
개발자나탈리 바이젠바움(과거), 노먼 클라크, 맷 와일드릭, 마쓰다 아키라, 티 파럼[1]
안정적 해제
5.2.2 / 2021년 6월 27일; 8개월(2021-06-27)[2]
구현 언어루비
OS크로스 플랫폼
면허증MIT 라이센스Unspace Interactive[1]
파일 이름 확장명.haml
웹사이트haml.info

Haml(HTML 추상화 마크업 언어)은 웹 문서에 인라인 코드를 쓰지 않고 HTML을 더 깨끗하게 만들 수 있도록 설계된 템플리트 시스템이다.Haml은 HTML로 동적 콘텐츠를 가질 수 있는 유연성을 부여한다. PHP, ASP, JSP와 같은 다른 웹 언어와 eRuby와 같은 템플릿 시스템과 유사하게, Haml은 또한 어떤 동적 콘텐츠를 제공하기 위해 런타임에 실행되어 HTML 코드를 생성한다.Haml 코드를 실행하기 위해서는 파일에 다음이 있어야 한다..haml 확장. 파일들은 웹 어플리케이션을 개발하는 동안 루비 코드를 삽입하는 것을 돕는 .erb 또는 eRuby 파일과 유사하다.

햄은 코딩 코멘트를 구문 분석하면서 루비 1.9 이상과 같은 규칙을 사용한다.Haml은 UTF-8과 같은 ASCII 호환 인코딩만 이해하지만, UTF-16 또는 UTF-32ASCII와 호환되지 않기 때문이다.[3][4]

Haml은 커맨드 라인, 별도의 Ruby 모듈로 사용하거나 Ruby on Rails 어플리케이션에서 사용할 수 있어 다양한 어플리케이션에 적합하다.

역사

햄은 원래 햄프턴 캐틀린이 2006년에 처음 출시하면서 소개했고 그의 작품은 다른 몇몇 사람들에 의해 앞서나갔다.[5]그의 동기는 HTML을 더 간단하고, 더 깨끗하고, 사용하기 쉽게 만드는 것이었다.2006년 이후 여러 차례 개정되었고 새로운 버전이 출시되었다.2012년까지 나탈리 바이젠바움이 햄의 1차 유지자였고, 2015년까지 노먼 클라크가 그 뒤를 이었다.[5] 나탈리는 Ruby 애플리케이션에서 햄을 사용할 수 있게 만드는 작업을 했고, 브랜딩과 디자인은 Nick Walsh에 의해 이루어졌다.[5]현재 정비팀에 소속된 맷 와일드릭, 마쓰다 아키라, 티 파럼, 고쿠분 다카시 등이 있다.[1]

버전 이력

버전 2.2.0은 2009년 7월에 Ruby 1.9와 Rails 2.0 이상을 지원하여 출시되었다.[2]버전 3.0.0은 2010년 5월에 출시되었으며, 레일즈 3에 대한 지원과 일부 성능 향상이 추가되었다.네 번째 주요 버전은 이전 버전과의 호환성을 깨고, 레일즈 3과 루비 1.8.7 이상만을 지원했으며, 의미론적 버전화로의 전환을 표시했다.성능 향상, 몇 가지 경고 수정, 최신 버전의 레일즈와의 호환성, 설명서의 수정, 그리고 Haml 4 시리즈에서 더 많은 수정 사항이 이루어졌다.[2]버전 5.0.0은 2017년 4월에 출시되었다.루비 2.0.0 이상을 지원하며 레일즈3와의 호환성을 떨어뜨린다.[2]햄 템플릿에서 추적을 할 수 있도록 도와주는 '추적'[6] 옵션이 추가됐다.

특징들

햄 개발에는 네 가지 원칙이 개입되었다.[5]

사용자 친화적 마크업

마크업 언어는 다음과 같은 특징을 고수할 경우 사용자에게 친숙하다.

  • 언어를 이해하기 쉽다.
  • 간편한 사용(이행)

건조하다

마크업 언어는 Don't repeat yourself (DRY) 원칙을 준수해야 한다.다음을 수행해야 한다.

  • 불필요한 반복을 피한다.
  • 클린코드에 집중

선의의

들여쓰기가 좋은 마크업 언어는 외관을 향상시키고 독자들이 쉽게 읽을 수 있도록 하며 또한 주어진 요소의 시작과 끝을 결정할 수 있게 한다.

클리어 구조

구조가 명확한 마크업 언어는 코드 유지와 최종 결과의 논리적 이해에 도움이 될 것이다.햄이 이런 점에서 어떤 차별적 이점을 제공하는지는 불분명하다.

Haml markup은 구문에서는 CSS와 비슷하다.예를 들어, 햄은 같은 점을 가지고 있다..CSS와 같은 클래스에 대한 표현으로 개발자가 이 마크업을 쉽게 사용할 수 있도록 한다.

"안녕, 월드!"

명령줄 도구로서의 햄

다음은 HAML이 CSS 선택기를 인식하는 것과 같다.

%p{:class => "샘플", :id => "웰컴"} 안녕, 월드!
%p.sample#welcome Hello, World!

다음 HTML 코드로 렌더링:

<p class="welcome" id="welcome">안녕, 월드!

Ruby on Rails의 애드온으로서의 햄

루비와 함께 햄을 사용하기 위해, 루비Gemfile다음 행을 포함해야 한다.

보석 '햄'

Haml은 eRuby와 마찬가지로 로컬 변수(Ruby code에 있는 동일한 파일 내에 선언됨)에도 접근할 수 있다.이 예에서는 샘플 Ruby 컨트롤러 파일을 사용한다.[7]

  • 파일:app/controllers/messages_controller.rb
    계급 MessagesController < ApplicationController   반항하다 색인을 달다     @message = "안녕, 월드!"   종지부를 찍다 종지부를 찍다 
  • 파일:app/views/messages/index.html.haml
    #환영     %p= @message 

이렇게 하면 다음이 된다.

<div id="welcome"> <p>안녕하십니까, 월드!</p> </div>

루비 모듈로서의 햄

RailsActionView와 독립적으로 Haml을 사용하려면 설치haml 보석, 에 포함Gemfile그리고 간단히 수입하다[Usage: require 'haml']루비 대본으로 쓰거나 루비 통역사를 불러내라.-rubygems국기를 달다

환영하다 = ::엔진.새로운("%p 헬로, 월드!") 환영하다.렌더링하다 

출력:

안녕, 월드!

햄:엔진은 햄 클래스다.

기본 예

Haml은 태그 중첩과 스코프에 공백 들여쓰기(2칸)를 사용한다.이것은 오픈 엔드 태그 쌍을 대체하는 역할을 하므로 건조하고 깨끗해진다.다음 예제는 Haml과 eRuby(Embedded Ruby)의 구문을 HTML 출력과 비교한다.

ERB HTML
%div.cs     %div.cs         %h1= 요리법.이름을 붙이다         %h3= 요리법.범주     %div         %h4= 요리법.설명 
<칸막이하다 계급="category">     <칸막이하다 계급="recipes">         <h1><%= 요리법.이름을 붙이다 %></h1>         <h3><%= 요리법.범주 %></h3>     </칸막이하다>     <칸막이하다>         <h4><%= 요리법.설명 %></h4>     </칸막이하다> </칸막이하다> 
<div class="category" > <div class="recipes"><h1>쿠키</h1><h3>Desserts</h3> <div> <h4> 반죽과 설탕으로 만든다.보통 원형이며 약 400칼로리를 가지고 있다.</h4> </div> </div>


주요 차이점은 다음과 같다.

  • Haml은 eRuby와 같은 각 요소에 대해 시작과 끝을 모두 가지고 있지 않다.
  • eRuby 구문은 HTML과 많이 닮았고 따라서 HTML과 더 유사하며 Haml은 CSS와 더 유사하다.
  • Haml은 태그 요소를 중첩하기 위해 들여쓰기를 사용하는 반면 eRuby는 동일한 HTML 표현을 사용한다.
  • Haml 특성class,id으로 대표할 수 있다..,#각각 정시대신class그리고id키워드Haml은 또한 사용한다.%대신 HTML 요소를 나타냄<>에루비에서와 같이

포함된 Ruby 코드 예제

참고: 이것은 간단한 미리보기 예시이며 언어의 현재 버전을 반영하지 않을 수 있다.

!!!의%html{:xmlns =>,"http://www.w3.org/1999/xhtml",:lang =>,"en","xml:lang"=>,"en"}%머리%제목 BoBlog%meta{"http-equiv"=>,"Content-Type",:콘텐츠 =>,"text/html, charset=utf-8"}%link{"rel"=>,"스타일 시트","href"=>,"main.css","형식"=>,"text/css"}%몸)헤더%h1 BoBlog%h2 밥의 블로그#콘텐츠-@ e.ntries.each 진입 한다.%h3.title= entry.title %p.date= entry.posted.strftime("%A, %B %d, %Y") %p.body= entry.#body #footer %p 모든 콘텐츠 저작권 © Bob

위의 Haml은 XHTML을 생산한다.

<>!DOCTYPE 공공"-//W3C//DTD XML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,<>html lang='en의:lang='en의 xmlns='http://www.w3.org/1999/xhtml'&gtxml,<>head>, 개체, title>, BoBlog<, /title>,<>meta content='text/html, charset=utf-8의http-equiv='Content-Type'/>,<>링크 href="/styleshee html.ts"media="screen"rel="StylesHeet" type="text/css" /></head> <body><div id='header'><h1>BoBlog</h2> <div id='content'><div id='div class='title'><h3 class='title'title>>>할로윈[/h3] <p class='date>2006년 10월 31일 화요일 (<p class='body') 해피 할로윈, 영광스러운 독자 여러분!오늘 저녁에 파티에 갈 건데...나는 매우 흥분된다.</p> </div> <div class='entry> <h3 class='depend><h3 class='depend>.>새로운 레일즈 템플리팅 엔진</h3> <p class='date>>2006년 8월 11일 금요일 (<p class='body') 루비 온 레일즈를 위한 아주 멋진 새 템플팅 엔진이 나왔다.햄이라는 이름이야.</p> </div> </div id='footer'> <p> 모든 콘텐츠 저작권 all Bob </p> </div> </div> </html>

구현

햄의 공식 구현은 루비 레일즈머브용 플러그인으로 루비를 위해 구축되었지만 루비 구현도 독자적으로 기능한다.햄은 다른 언어와 함께 쉽게 사용할 수 있다.다음은 Haml이 구현한 언어 목록이다.

참고 항목

참조

  1. ^ a b c "GitHub". Retrieved 28 April 2018.
  2. ^ a b c d "Changelog". Retrieved 28 April 2018.
  3. ^ "Encoding". Retrieved 29 January 2016.
  4. ^ "UTF encodings". Retrieved 7 February 2016.
  5. ^ a b c d "About". Retrieved 28 April 2018.
  6. ^ "Trace Option in Haml". Retrieved 16 February 2016.
  7. ^ "Using Haml". Retrieved 7 February 2016.

외부 링크