SlideShare una empresa de Scribd logo
1 de 10
HTML Templating
Clojure 웹 스터디 2015-07-29
한철희
自己紹介
• Java/Web, iOS Programmer
• 6502 Assembly, FORTH, Haskell…
• Clojure !
Agenda
• HTML Templating?
• Luminus의 Templating Options
• Selmer 배워 보기
• Hiccup 맛보기
HTML Templating
Templating Options
• Hiccup, Selmer…
• lein new luminus로 만들어보면 Selmer가 디폴트
Selmer
• Django inspired template system
• Django와 유사한 문법
• *.clj에 코드에서 필요한 map(KV pair)을 생성하고
html에서 이를 태깅하여 표현
• Selmer는 render, render-file 함수를 지원
• Luminus로 생성한 프로젝트는 layout/render 함수 재
정의 ( layout.clj )
Selmer 배워 보기 - 값 출력
(defn selemer1-page []
(selmer.parser/render
"<p>Hello {{user.first}} {{user.last}}</p>"
{:user {:first "John" :last “Doe"}}))
(defroutes home-routes
(GET "/selmer" [] (selemer1-page))
)
—————————————
Hello John Doe
Selmer 배워 보기 - with
(defn selemer-with-page []
(selmer.parser/render
"{% with total=business.employees|count %}{{
total }}{% endwith %} employees”
{:business {:employees (range 5)}}))
(defroutes home-routes
(GET “/selmer-with” [] (selemer-with-page))
)
—————————————
5 employees
Template Inheritance
• extends
- 부모 템플릿 파일에서 지정된 block을 오버라이드
• include
- 그냥 가져다 씀
Hiccup
• 템플릿용 DSL없이 Clojure로 직접 HTML을 코딩한
다
• 장점 : Clojure로 끝.
• 단점 : Publisher의 일이 나의 일로 둔갑.

Más contenido relacionado

La actualidad más candente

JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본Myungjin Lee
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본Tj .
 
JSP 프로그래밍 #05 HTML과 JSP
JSP 프로그래밍 #05 HTML과 JSPJSP 프로그래밍 #05 HTML과 JSP
JSP 프로그래밍 #05 HTML과 JSPMyungjin Lee
 
잭블랙이블랙잭을한다 - 수업용 발표
잭블랙이블랙잭을한다 - 수업용 발표잭블랙이블랙잭을한다 - 수업용 발표
잭블랙이블랙잭을한다 - 수업용 발표Seokmin No
 
Jsp 기본요소
Jsp 기본요소Jsp 기본요소
Jsp 기본요소cooddy
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례선협 이
 
JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿Myungjin Lee
 
추억의 자바스크립트
추억의 자바스크립트추억의 자바스크립트
추억의 자바스크립트욱진 양
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & PolymerJae Sung Park
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표Seokmin No
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기Han Jung Hyun
 
Ngui3 5 5 localization
Ngui3 5 5 localizationNgui3 5 5 localization
Ngui3 5 5 localizationJe Lyoung Kim
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍Myungjin Lee
 

La actualidad más candente (16)

JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본
 
React native 개발 및 javascript 기본
React native 개발 및 javascript 기본React native 개발 및 javascript 기본
React native 개발 및 javascript 기본
 
JSP 프로그래밍 #05 HTML과 JSP
JSP 프로그래밍 #05 HTML과 JSPJSP 프로그래밍 #05 HTML과 JSP
JSP 프로그래밍 #05 HTML과 JSP
 
잭블랙이블랙잭을한다 - 수업용 발표
잭블랙이블랙잭을한다 - 수업용 발표잭블랙이블랙잭을한다 - 수업용 발표
잭블랙이블랙잭을한다 - 수업용 발표
 
Jsp 기본요소
Jsp 기본요소Jsp 기본요소
Jsp 기본요소
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿
 
3-2. selector api
3-2. selector api3-2. selector api
3-2. selector api
 
추억의 자바스크립트
추억의 자바스크립트추억의 자바스크립트
추억의 자바스크립트
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & Polymer
 
잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표잭블랙이블랙잭을한다 - 최종발표
잭블랙이블랙잭을한다 - 최종발표
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기
 
Ngui3 5 5 localization
Ngui3 5 5 localizationNgui3 5 5 localization
Ngui3 5 5 localization
 
JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍JSP 프로그래밍 #01 웹 프로그래밍
JSP 프로그래밍 #01 웹 프로그래밍
 

Similar a Luminus : Html templating

알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web AnimationsChang W. Doh
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기Gyutae Jo
 
Undefined 2월발표 backbonejs
Undefined 2월발표 backbonejsUndefined 2월발표 backbonejs
Undefined 2월발표 backbonejsKyungree Bae
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타NAVER D2
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629Dosang Yoon
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Javajigi Jaesung
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & iosNAVER D2
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용NAVER D2
 
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XpressEngine
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기John Kim
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 

Similar a Luminus : Html templating (20)

알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
 
Undefined 2월발표 backbonejs
Undefined 2월발표 backbonejsUndefined 2월발표 backbonejs
Undefined 2월발표 backbonejs
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
Java script
Java scriptJava script
Java script
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios[1B6]Realm a database for android & ios
[1B6]Realm a database for android & ios
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용
 
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
 
플라스크 템플릿
플라스크 템플릿플라스크 템플릿
플라스크 템플릿
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 

Luminus : Html templating

  • 1. HTML Templating Clojure 웹 스터디 2015-07-29 한철희
  • 2. 自己紹介 • Java/Web, iOS Programmer • 6502 Assembly, FORTH, Haskell… • Clojure !
  • 3. Agenda • HTML Templating? • Luminus의 Templating Options • Selmer 배워 보기 • Hiccup 맛보기
  • 5. Templating Options • Hiccup, Selmer… • lein new luminus로 만들어보면 Selmer가 디폴트
  • 6. Selmer • Django inspired template system • Django와 유사한 문법 • *.clj에 코드에서 필요한 map(KV pair)을 생성하고 html에서 이를 태깅하여 표현 • Selmer는 render, render-file 함수를 지원 • Luminus로 생성한 프로젝트는 layout/render 함수 재 정의 ( layout.clj )
  • 7. Selmer 배워 보기 - 값 출력 (defn selemer1-page [] (selmer.parser/render "<p>Hello {{user.first}} {{user.last}}</p>" {:user {:first "John" :last “Doe"}})) (defroutes home-routes (GET "/selmer" [] (selemer1-page)) ) ————————————— Hello John Doe
  • 8. Selmer 배워 보기 - with (defn selemer-with-page [] (selmer.parser/render "{% with total=business.employees|count %}{{ total }}{% endwith %} employees” {:business {:employees (range 5)}})) (defroutes home-routes (GET “/selmer-with” [] (selemer-with-page)) ) ————————————— 5 employees
  • 9. Template Inheritance • extends - 부모 템플릿 파일에서 지정된 block을 오버라이드 • include - 그냥 가져다 씀
  • 10. Hiccup • 템플릿용 DSL없이 Clojure로 직접 HTML을 코딩한 다 • 장점 : Clojure로 끝. • 단점 : Publisher의 일이 나의 일로 둔갑.