햄
Haml이 글은 광고처럼 쓰인 내용을 담고 있다.(2017년 7월)(이를 과 시기 |
| 패러다임 | 템플릿 엔진 |
|---|---|
| 설계자 | 햄프턴 캐틀린 |
| 개발자 | 나탈리 바이젠바움(과거), 노먼 클라크, 맷 와일드릭, 마쓰다 아키라, 티 파럼[1] |
| 안정적 해제 | 5.2.2 / 2021년 6월 27일; 전[2] |
| 구현 언어 | 루비 |
| OS | 크로스 플랫폼 |
| 면허증 | MIT 라이센스 및 Unspace Interactive[1] |
| 파일 이름 확장명 | .haml |
| 웹사이트 | haml |
Haml(HTML 추상화 마크업 언어)은 웹 문서에 인라인 코드를 쓰지 않고 HTML을 더 깨끗하게 만들 수 있도록 설계된 템플리트 시스템이다.Haml은 HTML로 동적 콘텐츠를 가질 수 있는 유연성을 부여한다. PHP, ASP, JSP와 같은 다른 웹 언어와 eRuby와 같은 템플릿 시스템과 유사하게, Haml은 또한 어떤 동적 콘텐츠를 제공하기 위해 런타임에 실행되어 HTML 코드를 생성한다.Haml 코드를 실행하기 위해서는 파일에 다음이 있어야 한다..haml 확장.이 파일들은 웹 어플리케이션을 개발하는 동안 루비 코드를 삽입하는 것을 돕는 .erb 또는 eRuby 파일과 유사하다.
햄은 코딩 코멘트를 구문 분석하면서 루비 1.9 이상과 같은 규칙을 사용한다.Haml은 UTF-8과 같은 ASCII 호환 인코딩만 이해하지만, UTF-16 또는 UTF-32는 ASCII와 호환되지 않기 때문이다.[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>루비 모듈로서의 햄
Rails 및 ActionView와 독립적으로 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'>xml,<>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이 구현한 언어 목록이다.
- 루비: 햄릿
- PHP: Fammel, pHAML, phamlp, phpHaml(PHP 5), HAML-TO-PHP(PHP 5), 다중 표적 HAML(PHP 5.3)
- 자바스크립트: 햄-js
- 파이톤: 햄피
- Common Lisp: cl-haml
- 다트: 하트
- 자바: JHAMl
- 루아: 루아함
- .NET: NHAML
- ASP.NET: 모노레일 NHAML
- 펄: 텍스트::햄
- 스칼라: 스칼라
참고 항목
- BBCode
- 에루비
- 마르카비
- 루비
- 루비 온 레일즈
- YAML
- Sass – CSS와 유사한 시스템, Catlin이 설계한 시스템.
- 웹 사이트 메타 언어 – 유사한 기능을 가진 또 다른 템플릿 언어
- 웹 템플리트 – HTML 확장까지 템플릿의 일반 개념
참조
- ^ a b c "GitHub". Retrieved 28 April 2018.
- ^ a b c d "Changelog". Retrieved 28 April 2018.
- ^ "Encoding". Retrieved 29 January 2016.
- ^ "UTF encodings". Retrieved 7 February 2016.
- ^ a b c d "About". Retrieved 28 April 2018.
- ^ "Trace Option in Haml". Retrieved 16 February 2016.
- ^ "Using Haml". Retrieved 7 February 2016.