SlideShare a Scribd company logo
1 of 16
Download to read offline
Handlebars.js
SK planet ํ•œ์ •ํ˜„
(kazikai84@gmail.com)
Table of Contents
โ€ข Handlebars ?
โ€ข Why Handlebars? (Mustache?)
โ€ข Getting Started
โ€ข Expression
โ€ข Helper
โ€ข built-in
โ€ข custom
โ€ข Comments
โ€ข Built-in Utility
Handlebars?
โ€ข http://handlebarsjs.com/
โ€ข https://github.com/wycats/handlebars.js/
โ€ข Mustache ํ…œํ”Œ๋ฆฟ ์–ธ์–ด๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ™•์žฅ ํ…œํ”Œ๋ฆฟ
โ€ข View ์™€ Code ๋ฅผ ๋ถ„๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง : ๋กœ์ง ๊ณผ presentation ์„ ๋ถ„๋ฆฌ
โ€ข Mustache ํ…œํ”Œ๋ฆฟ์— Handlebars ํ™•์žฅ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์Œ
โ€ข Web site๋ณด๋‹ค๋Š” Web app์— ๋” ์ ํ•ฉ
โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์•ˆ์— HTML Element ๋ฅผ ๋„ฃ์ง€ ์•Š๊ธฐ ์œ„ํ•ด
not Handlebarsโ€ฆ
var $content = $( '#content' ),
$div = $( '<div class="tab">ํƒญ ์˜์—ญ ์ž…๋‹ˆ๋‹ค. </div>' ),
$gnb = $( '<h1 > header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. </h1>' ),
$input = $( '<input type="text" placeholder="ํ…์ŠคํŠธ" value="1" disalbed>' );
$content.append( $div ).append( $gnb ).prepend( $input );
var $content = $( '#content' ),
$div = $( '<div>' ).addClass('tab').html( 'ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ' ),
$gnb = $( '<h1></h1>' ).html( ' header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. '),
$input = $( '<input>' ).attr({
"type" : "text",
"placeholder" : "ํ…์ŠคํŠธ"
}).val( "1" ).prop( 'disalbed', true );
$content.append( $div ).append( $gnb ).prepend( $input );
var $content = $( '#content' );
function makeTemplate ( $elem, dContent, gContent ) {
var $div = $( '<div>' ).addClass('tab').html( dContent ),
$gnb = $( '<h1></h1>' ).html( gContent ),
$input = $( '<input>' ).attr({
"type" : "text",
"placeholder" : "ํ…์ŠคํŠธ"
}).val( "1" ).prop( 'disalbed', true );
return $elem.append( $div ).append( $gnb ).prepend( $input );
};
makeTemplate( $content, 'ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค.', 'header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค.' );
๋„ˆ๋ฌด ๋ณต์žกํ•จโ€ฆ JS ์•ˆ์— html ์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ ,
๋ฐ˜๋ณต์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๋˜๋Š” ์ฝ”๋“œ์—์„œ๋Š” ์‚ฌ์šฉ ํ•˜๊ธฐ ํž˜๋“ฌ ..
-> ์žฅ์ ์œผ๋กœ jQuery๋ฅผ ๋งŽ์ด ์จ๋ณธ๋‹ค..??
jQuery ์Šคํƒ€์ผ๋กœ ๋ณ€๊ฒฝ๋„ ํ•ด๋ณด๊ณ ..
๋ชจ๋“ˆํ™”๋„ ํ•ด๋ณด์ง€๋งŒ..
Handlebars
<script type="text/x-handlebars-template" id="test3-template">
<input type="text" placeholder="ํ…์ŠคํŠธ" value=โ€œ{{value}}โ€œ disabled>
<div class="tab">
{{dContent}}
</div>
<h1>{{gContent}}</h1>
</script>
var context3 = {
โ€œvalueโ€: 1,
"dContent": "ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ",
"gContent": "header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. "
};
var test3Tmpl = Handlebars.compile( $( '#test3-template' ).html() );
$( '#test3' ).html( test3Tmpl( context3 ) );
Template ์„ ๋งŒ๋“ค๊ณ 
JavaScript ์—์„œ data ๋ฅผ ์ •ํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ณ 
ํ…œํ”Œ๋ฆฟ์„ ์“ฐ๋Š”๊ฒŒ ๋‹ต์ด๋‹ค!!
์ตœ์ข…์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์—ฌ์ง
Why Handlebars? (Mustache?)
โ€ข handlebars template ์€ ์ปดํŒŒ์ผ ๋œ๋‹ค.
โ€ข #if , #unless, #with, #each ๋“ฑ์„ ์ง€์›
โ€ข helper๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
โ€ข path ๊ตฌ์กฐ๋ฅผ ์ง€์› {{#each ../person.name }}
โ€ข 5๋ฐฐ์—์„œ 7๋ฐฐ handlebars๊ฐ€ ๋” ๋น ๋ฆ„ : https://travis-
ci.org/wycats/handlebars.js/builds/33392182#L538
Getting Started
โ€ข handlebars.js ํŒŒ์ผ include
โ€ข ๋ณด์—ฌ์งˆ HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ 
โ€ข HTML ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ๋  ๋ถ€๋ถ„ ( ์žฌ์‚ฌ์šฉ ๋“ฑ์— ์˜ํ•ด ) ์„ {{}} expression์œผ๋กœ ๊ฐ์‹ธ ์ค€๋‹ค.
โ€ข ๋งŒ๋“ค์–ด์ง„ HTML ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฌ๋งท์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค.
โ€ข ์ด์ œ JavaScript ์—์„œ ์œ„ Template ์„ ์ฐพ์•„ compile ํ•œํ›„
โ€ข ํ…œํ”Œ๋ฆฟ ์•ˆ์— ๋“ค์–ด๊ฐˆ Data ๋ฅผ ์„ ์–ธ ํ•œํ›„ ํ…œํ”Œ๋ฆฟ์— ์ธ์ž๋กœ ๋„ฃ์–ด์ค€๋‹ค.
โ€ข ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์˜จ html ๋ณ€์ˆ˜ ์•ˆ์—๋Š” HTML ์ด ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ, DOM ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
<div class="entry">
<h1>{{title}}</h1>
<div class="body">
{{body}}
</div>
</div>
<script type="text/x-handlebars-template" id=โ€œtemplate">
</script>
var source = $( โ€˜#templateโ€™ ).html();
var template = Handlebars.compile( source );
var context = { title : โ€œํƒ€์ดํ‹€โ€ , โ€œbodyโ€: โ€œ๋ฐ”๋””โ€ };
var html = template( context ) ;
$(โ€˜bodyโ€™).append( html );
<div class="entry">
<h1>ํƒ€์ดํ‹€</h1>
<div class="body">
๋ฐ”๋””
</div>
</div>
Expression
โ€ข ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฒ• <h1>{{title}}</h1>
โ€ข ํ˜„์žฌ context ์•ˆ์— title ์†์„ฑ์„ ํ‘œํ˜„ ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ {{ title.text }}( dot ์‚ฌ์šฉ ๊ฐ€๋Šฅ )
โ€ข {{ title/text }} ( / ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ dot ์™€ ๊ฐ™๋‹ค. ) {{ this.title.text }} , {{ ./title.text }} ๋„ ๋™์ผ
โ€ข ../ ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ( ๋ถ€๋ชจ context์— ์ ‘๊ทผ ํ•˜๋ ค๋ฉด ํ•„์š” )
โ€ข HTML ๋ฌธ๋ฒ•์ด Data์— ์žˆ์œผ๋ฉด,ํ•ด๋‹น HTML ๋ฌธ๋ฒ•๋„ ํ‘œ์‹œ
โ€ข {{{ expressions }}} ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ž๋™์œผ๋กœ ์—†์–ด์ง
โ€ข Whitespace Control ๋ฅผ ํ•˜๋ ค๋ฉด expression ์•ž์— ~ ๋ฅผ ๋ถ™ํžˆ๋ฉด ๋œ๋‹ค.
Helper: Built -in
โ€ข with : ํ…œํ”Œ๋ฆฟ์—์„œ context ์ด๋™์‹œ์— ์‚ฌ์šฉ
โ€ข each : ๋ฐฐ์—ด ํ˜•ํƒœ ๋˜๋Š” object ํ˜•ํƒœ์˜ context ์—์„œ ์‚ฌ์šฉ : else๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ
โ€ข each : @key , @index ๋ฅผ ํ‚ค ๊ฐ’๊ณผ index ๊ฐ’์„ ํ‘œ์‹œ ํ• ์ˆ˜์žˆ์Œ
Helper: Built -in
โ€ข if : context ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‚ฌ์šฉ
โ€ข if ๋Š” ํ•ด๋‹น argument ๊ฐ€ falsy ์ผ๋•Œ ( false, undefined, null, โ€œโ€ , [] ) ์ผ๋•Œ ๋™์ž‘ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ€ข else ์™€ ๊ฐ™์ด ์ฃผ๋กœ ๊ฐ™์ด ์‚ฌ์šฉ ๋จ
โ€ข unless : if helper ์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…์œผ๋กœ ๊ฐ’์ด falsy ์ผ๋•Œ ๋ Œ๋”๋ง ๋œ๋‹ค.
โ€ข log : ํ…œํ”Œ๋ฆฟ์ด ์‹คํ–‰ ๋˜๋Š” ๋™์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ๋กœ๊น… ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ : {{log โ€œlookโ€}}
Helpers: Custom
โ€ข ๊ธฐ๋ณธ helper ๋ฅผ ์ œ์™ธ ํ•˜๊ณ  ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•˜๋Š” helper ๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Œ
โ€ข Handlebars.registerHelper() ๋ฅผ ์‚ฌ์šฉ
โ€ข registerHelper์˜ return ๊ฐ’์€ ์ž๋™์œผ๋กœ escape ์ฒ˜๋ฆฌ๊ฐ€ ๋จ :
โ€ข escape ๋Š” http://www.freeformatter.com/html-escape.html ์ฐธ์กฐ
โ€ข escape ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, return ํ•˜๊ธฐ์ „ new Handlebars.SafeString( [return value] ); ํ•ด์ฃผ๊ณ  return์„
ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ]
โ€ข ํ—ฌํผ ๋‹ค์Œ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฐ’๋“ค์€ helper์˜ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค ( ์ˆœ์„œ์— ๋”ฐ๋ผ..)
Helpers: Custom
โ€ข Hash Arguments
โ€ข custom helper ๋ฅผ ๋งŒ๋“ค๋•Œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กฐ๊ฑด ๊ฐ’๋“ค์„ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์Œ
โ€ข key = value ๋กœ ๋„ฃ์€ ์ธ์ž๋“ค์€ options.hash.key = value ๋กœ ์ €์žฅ๋˜์–ด์žˆ์Œ
โ€ข hash ๋Š” ๋งˆ์ง€๋ง‰ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
โ€ข
Comments
โ€ข {{! }} or {{!-- --}} ๋ฅผ ์‚ฌ์šฉ
โ€ข HTML ๋‚ด์—์„œ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ• ๋•Œ ์‚ฌ์šฉ ์œ„ 2 ํฌ๋งท ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
โ€ข ํ•ด๋‹น Comment๋Š” ์ตœ์ข… HTML ์—์„œ๋Š” ์•ˆ๋ณด์ž„
โ€ข HTML ์—์„œ ๋ณด์—ฌ์ง€๋Š” Comment ๋ฅผ ์›ํ•œ๋‹ค๋ฉด <!-- -->
Utility
โ€ข ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ. ์ฃผ๋กœ string ์ฒ˜๋ฆฌ ๋ฐ์— ์œ ์šฉ ํ•จ
โ€ข Handlebars.Utils.escapeExpression(string)
โ€ข HTML ๊ณผ ํƒœ๊ทธ๋“ค์„ String ์œผ๋กœ ํ‘œํ˜„ : new Handlebars.SafeString().toString() ๊ณผ ๋™์ผํ•จ
โ€ข Handlebars.Utils.isEmpty(value)
โ€ข value ์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จ
โ€ข Handlebars.Utils.extend(obj, value)
โ€ข obj ์— value ํ™•์žฅ ( $.extend ์™€ ๋™์ผ )
โ€ข Handlebars.Utils.toString(obj, value)
โ€ข toString ๊ณผ ๋™์ผ
โ€ข Handlebars.Utils.isArray(obj, value)
โ€ข obj ๊ฐ€ array ์ธ์ง€ ํŒ๋‹จ
โ€ข Handlebars.Utils.isFunction(obj, value)
โ€ข obj ๊ฐ€ function์ธ์ง€ ํŒ๋‹จ
Supported Environments
โ€ข EcamScript 3์ด ๋™์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ฉด ๋™์ž‘ํ•˜๊ฒŒ ์„ค๊ณ„
โ€ข Node.js
โ€ข Chrome
โ€ข Firefox
โ€ข Safari 5+
โ€ข Opera 11+
โ€ข IE 6+
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์˜ˆ์ œ ์ฝ”๋“œ
โ€ข https://github.com/kazikai/handlebars

More Related Content

What's hot

[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery
[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery
[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery์ •์„ ์–‘
ย 
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ตNAVER D2
ย 
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.Kyoung Up Jung
ย 
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐKyoung Up Jung
ย 
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerPolymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerChang W. Doh
ย 
์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.jsWoo Jin Kim
ย 
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐReact๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐWebFrameworks
ย 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brickyongwoo Jeon
ย 
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟ
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟ
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟThomas Hyunsik Kim
ย 
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐDjango๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐKyoung Up Jung
ย 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
ย 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jqueryJinKyoungHeo
ย 
Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
ย 
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2์„ฑ์ผ ํ•œ
ย 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs๊ธฐ๋™ ์ด
ย 
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?Sang-ho Choi
ย 
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œSukjoon Kim
ย 
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”Taegon Kim
ย 
๋‹ค์‹œ๋ณด๋Š” Angular js
๋‹ค์‹œ๋ณด๋Š” Angular js๋‹ค์‹œ๋ณด๋Š” Angular js
๋‹ค์‹œ๋ณด๋Š” Angular jsJeado Ko
ย 
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌAngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌJin wook
ย 

What's hot (20)

[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery
[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery
[ํ•˜์ฝ”์‚ฌ์„ธ๋ฏธ๋‚˜] ํ•œ ์‹œ๊ฐ„ ๋งŒ์— ๋ฐฐ์šฐ๋Š” Jquery
ย 
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต
[D2CAMPUS]JavaScript แ„ƒแ…กแ„‰แ…ต แ„‰แ…ตแ„Œแ…กแ†จแ„’แ…กแ„€แ…ต
ย 
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.
Django, แ„Œแ…ฅแ„‚แ…ณแ†ซ แ„‹แ…ตแ„…แ…ฅแ‡‚แ„€แ…ฆ แ„Šแ…ณแ†ธแ„‚แ…ตแ„ƒแ…ก.
ย 
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ
๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๋ฉฐ Django ์ดํ•ดํ•˜๊ธฐ
ย 
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerPolymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
ย 
์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js์ง„์งœ๊ธฐ์ดˆ Node.js
์ง„์งœ๊ธฐ์ดˆ Node.js
ย 
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐReact๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
React๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ
ย 
Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
ย 
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟ
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟ
ํ”Œ๋ผ์Šคํฌ ํ…œํ”Œ๋ฆฟ
ย 
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐDjango๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ
Django๋ฅผ Django๋‹ต๊ฒŒ, Django๋กœ ๋‰ด์Šค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ
ย 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
ย 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
ย 
Django in Production
Django in ProductionDjango in Production
Django in Production
ย 
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2
แ„Žแ…ฅแ„‹แ…ณแ†ทแ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„Œแ…กแ„‡แ…กแ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ธแ„แ…ณ, แ„Œแ…ฆแ„‹แ…ตแ„แ…ฏแ„…แ…ต #2
ย 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
ย 
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?
[์ปค๋น™ ์•„ํ‚คํ…์ณ] ์ปค๋น™์€ ์–ด๋–ป๊ฒŒ ์†Œ์…œ ์ปจํ…์ธ ๋ฅผ ๋ชจ์•„์˜ฌ๊นŒ์š”?
ย 
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
๋ ˆ์ผ์Šค๋ฅผ ์ด์šฉํ•œ ์• ์ž์ผ ์›น ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
ย 
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”
ReactJS | ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ดํŠธ์—์„œ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š”
ย 
๋‹ค์‹œ๋ณด๋Š” Angular js
๋‹ค์‹œ๋ณด๋Š” Angular js๋‹ค์‹œ๋ณด๋Š” Angular js
๋‹ค์‹œ๋ณด๋Š” Angular js
ย 
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌAngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ
AngularJS์˜ ๊ฐœ๋ฐœ๋ฐฉ์‹์— ๋Œ€ํ•˜์—ฌ
ย 

Similar to Handlebars

2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•
2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•
2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•Youngil Cho
ย 
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01JinKyoungHeo
ย 
Asp.net Razor
Asp.net Razor Asp.net Razor
Asp.net Razor Sang Yun Kim
ย 
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธHtml5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ์€์‹ฌ ๊ฐ•
ย 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascriptJinKyoungHeo
ย 
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจMichael Yang
ย 
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?Nts Nuli
ย 
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?Toby Yun
ย 
Programming skills 1๋ถ€
Programming skills 1๋ถ€Programming skills 1๋ถ€
Programming skills 1๋ถ€JiHyung Lee
ย 
[์ „ํŒŒ๊ต์œก] css day 2014
[์ „ํŒŒ๊ต์œก] css day 2014[์ „ํŒŒ๊ต์œก] css day 2014
[์ „ํŒŒ๊ต์œก] css day 2014Kyoung Hwan Min
ย 
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจMichael Yang
ย 
์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œก์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œกAria (In Suk) Kim
ย 
Best practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupBest practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupToby Yun
ย 
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ์€์‹ฌ ๊ฐ•
ย 
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ์€์‹ฌ ๊ฐ•
ย 
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐS1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ082net
ย 
Html5_SYS4U
Html5_SYS4UHtml5_SYS4U
Html5_SYS4Usys4u
ย 
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœHTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœToby Yun
ย 
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdf
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdfASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdf
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdfSangHoon Han
ย 
Web_07_Rails Advanced
Web_07_Rails AdvancedWeb_07_Rails Advanced
Web_07_Rails Advancedteam air @ Dimigo
ย 

Similar to Handlebars (20)

2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•
2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•
2017 Pycon KR - Django/AWS ๋ฅผ ์ด์šฉํ•œ ์‡ผํ•‘๋ชฐ ์„œ๋น„์Šค ๊ตฌ์ถ•
ย 
2 1. html4.01
2 1. html4.012 1. html4.01
2 1. html4.01
ย 
Asp.net Razor
Asp.net Razor Asp.net Razor
Asp.net Razor
ย 
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธHtml5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
Html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
ย 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
ย 
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 4์ผ์ฐจ
ย 
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
[2014๋„๋ฆฌ์„ธ๋ฏธ๋‚˜] ์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
ย 
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์‹œ๋งจํ‹ฑํ•œ HTML5 ๋งˆํฌ์—… ๊ตฌ์กฐ ์„ค๊ณ„, ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
ย 
Programming skills 1๋ถ€
Programming skills 1๋ถ€Programming skills 1๋ถ€
Programming skills 1๋ถ€
ย 
[์ „ํŒŒ๊ต์œก] css day 2014
[์ „ํŒŒ๊ต์œก] css day 2014[์ „ํŒŒ๊ต์œก] css day 2014
[์ „ํŒŒ๊ต์œก] css day 2014
ย 
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ
์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” HTML5 & CSS3 ๊ฐ•์˜์ž๋ฃŒ 8์ผ์ฐจ
ย 
์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œก์›นํ‘œ์ค€ ๊ต์œก
์›นํ‘œ์ค€ ๊ต์œก
ย 
Best practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic MarkupBest practice of HTML5 Semantic Markup
Best practice of HTML5 Semantic Markup
ย 
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
ย 
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
2. html5 ์‹œ๋งจํ‹ฑํƒœ๊ทธ
ย 
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐS1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ
S1.part.2.์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ ์‹œ์ž‘ํ•˜๊ธฐ
ย 
Html5_SYS4U
Html5_SYS4UHtml5_SYS4U
Html5_SYS4U
ย 
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœHTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
HTML5 ์ŠคํŽ™ ์†Œ๊ฐœ
ย 
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdf
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdfASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdf
ASP.NET MVC Framework ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ Razor Syntax.pdf
ย 
Web_07_Rails Advanced
Web_07_Rails AdvancedWeb_07_Rails Advanced
Web_07_Rails Advanced
ย 

Handlebars

  • 2. Table of Contents โ€ข Handlebars ? โ€ข Why Handlebars? (Mustache?) โ€ข Getting Started โ€ข Expression โ€ข Helper โ€ข built-in โ€ข custom โ€ข Comments โ€ข Built-in Utility
  • 3. Handlebars? โ€ข http://handlebarsjs.com/ โ€ข https://github.com/wycats/handlebars.js/ โ€ข Mustache ํ…œํ”Œ๋ฆฟ ์–ธ์–ด๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ™•์žฅ ํ…œํ”Œ๋ฆฟ โ€ข View ์™€ Code ๋ฅผ ๋ถ„๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง : ๋กœ์ง ๊ณผ presentation ์„ ๋ถ„๋ฆฌ โ€ข Mustache ํ…œํ”Œ๋ฆฟ์— Handlebars ํ™•์žฅ ๊ธฐ๋Šฅ๋“ค์„ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์Œ โ€ข Web site๋ณด๋‹ค๋Š” Web app์— ๋” ์ ํ•ฉ โ€ข ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์•ˆ์— HTML Element ๋ฅผ ๋„ฃ์ง€ ์•Š๊ธฐ ์œ„ํ•ด
  • 4. not Handlebarsโ€ฆ var $content = $( '#content' ), $div = $( '<div class="tab">ํƒญ ์˜์—ญ ์ž…๋‹ˆ๋‹ค. </div>' ), $gnb = $( '<h1 > header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. </h1>' ), $input = $( '<input type="text" placeholder="ํ…์ŠคํŠธ" value="1" disalbed>' ); $content.append( $div ).append( $gnb ).prepend( $input ); var $content = $( '#content' ), $div = $( '<div>' ).addClass('tab').html( 'ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ' ), $gnb = $( '<h1></h1>' ).html( ' header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. '), $input = $( '<input>' ).attr({ "type" : "text", "placeholder" : "ํ…์ŠคํŠธ" }).val( "1" ).prop( 'disalbed', true ); $content.append( $div ).append( $gnb ).prepend( $input ); var $content = $( '#content' ); function makeTemplate ( $elem, dContent, gContent ) { var $div = $( '<div>' ).addClass('tab').html( dContent ), $gnb = $( '<h1></h1>' ).html( gContent ), $input = $( '<input>' ).attr({ "type" : "text", "placeholder" : "ํ…์ŠคํŠธ" }).val( "1" ).prop( 'disalbed', true ); return $elem.append( $div ).append( $gnb ).prepend( $input ); }; makeTemplate( $content, 'ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค.', 'header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค.' ); ๋„ˆ๋ฌด ๋ณต์žกํ•จโ€ฆ JS ์•ˆ์— html ์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ณ , ๋ฐ˜๋ณต์ ์œผ๋กœ ์žฌ์‚ฌ์šฉ ๋˜๋Š” ์ฝ”๋“œ์—์„œ๋Š” ์‚ฌ์šฉ ํ•˜๊ธฐ ํž˜๋“ฌ .. -> ์žฅ์ ์œผ๋กœ jQuery๋ฅผ ๋งŽ์ด ์จ๋ณธ๋‹ค..?? jQuery ์Šคํƒ€์ผ๋กœ ๋ณ€๊ฒฝ๋„ ํ•ด๋ณด๊ณ .. ๋ชจ๋“ˆํ™”๋„ ํ•ด๋ณด์ง€๋งŒ..
  • 5. Handlebars <script type="text/x-handlebars-template" id="test3-template"> <input type="text" placeholder="ํ…์ŠคํŠธ" value=โ€œ{{value}}โ€œ disabled> <div class="tab"> {{dContent}} </div> <h1>{{gContent}}</h1> </script> var context3 = { โ€œvalueโ€: 1, "dContent": "ํƒญ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ", "gContent": "header ๋ถ€๋ถ„ ์˜์—ญ์ž…๋‹ˆ๋‹ค. " }; var test3Tmpl = Handlebars.compile( $( '#test3-template' ).html() ); $( '#test3' ).html( test3Tmpl( context3 ) ); Template ์„ ๋งŒ๋“ค๊ณ  JavaScript ์—์„œ data ๋ฅผ ์ •ํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ณ  ํ…œํ”Œ๋ฆฟ์„ ์“ฐ๋Š”๊ฒŒ ๋‹ต์ด๋‹ค!! ์ตœ์ข…์ ์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์—ฌ์ง
  • 6. Why Handlebars? (Mustache?) โ€ข handlebars template ์€ ์ปดํŒŒ์ผ ๋œ๋‹ค. โ€ข #if , #unless, #with, #each ๋“ฑ์„ ์ง€์› โ€ข helper๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ โ€ข path ๊ตฌ์กฐ๋ฅผ ์ง€์› {{#each ../person.name }} โ€ข 5๋ฐฐ์—์„œ 7๋ฐฐ handlebars๊ฐ€ ๋” ๋น ๋ฆ„ : https://travis- ci.org/wycats/handlebars.js/builds/33392182#L538
  • 7. Getting Started โ€ข handlebars.js ํŒŒ์ผ include โ€ข ๋ณด์—ฌ์งˆ HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  โ€ข HTML ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ๋  ๋ถ€๋ถ„ ( ์žฌ์‚ฌ์šฉ ๋“ฑ์— ์˜ํ•ด ) ์„ {{}} expression์œผ๋กœ ๊ฐ์‹ธ ์ค€๋‹ค. โ€ข ๋งŒ๋“ค์–ด์ง„ HTML ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํฌ๋งท์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค. โ€ข ์ด์ œ JavaScript ์—์„œ ์œ„ Template ์„ ์ฐพ์•„ compile ํ•œํ›„ โ€ข ํ…œํ”Œ๋ฆฟ ์•ˆ์— ๋“ค์–ด๊ฐˆ Data ๋ฅผ ์„ ์–ธ ํ•œํ›„ ํ…œํ”Œ๋ฆฟ์— ์ธ์ž๋กœ ๋„ฃ์–ด์ค€๋‹ค. โ€ข ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜์˜จ html ๋ณ€์ˆ˜ ์•ˆ์—๋Š” HTML ์ด ๋“ค์–ด์žˆ์œผ๋ฏ€๋กœ, DOM ์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. <div class="entry"> <h1>{{title}}</h1> <div class="body"> {{body}} </div> </div> <script type="text/x-handlebars-template" id=โ€œtemplate"> </script> var source = $( โ€˜#templateโ€™ ).html(); var template = Handlebars.compile( source ); var context = { title : โ€œํƒ€์ดํ‹€โ€ , โ€œbodyโ€: โ€œ๋ฐ”๋””โ€ }; var html = template( context ) ; $(โ€˜bodyโ€™).append( html ); <div class="entry"> <h1>ํƒ€์ดํ‹€</h1> <div class="body"> ๋ฐ”๋”” </div> </div>
  • 8. Expression โ€ข ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฒ• <h1>{{title}}</h1> โ€ข ํ˜„์žฌ context ์•ˆ์— title ์†์„ฑ์„ ํ‘œํ˜„ ํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ {{ title.text }}( dot ์‚ฌ์šฉ ๊ฐ€๋Šฅ ) โ€ข {{ title/text }} ( / ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ dot ์™€ ๊ฐ™๋‹ค. ) {{ this.title.text }} , {{ ./title.text }} ๋„ ๋™์ผ โ€ข ../ ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ( ๋ถ€๋ชจ context์— ์ ‘๊ทผ ํ•˜๋ ค๋ฉด ํ•„์š” ) โ€ข HTML ๋ฌธ๋ฒ•์ด Data์— ์žˆ์œผ๋ฉด,ํ•ด๋‹น HTML ๋ฌธ๋ฒ•๋„ ํ‘œ์‹œ โ€ข {{{ expressions }}} ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ž๋™์œผ๋กœ ์—†์–ด์ง โ€ข Whitespace Control ๋ฅผ ํ•˜๋ ค๋ฉด expression ์•ž์— ~ ๋ฅผ ๋ถ™ํžˆ๋ฉด ๋œ๋‹ค.
  • 9. Helper: Built -in โ€ข with : ํ…œํ”Œ๋ฆฟ์—์„œ context ์ด๋™์‹œ์— ์‚ฌ์šฉ โ€ข each : ๋ฐฐ์—ด ํ˜•ํƒœ ๋˜๋Š” object ํ˜•ํƒœ์˜ context ์—์„œ ์‚ฌ์šฉ : else๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ โ€ข each : @key , @index ๋ฅผ ํ‚ค ๊ฐ’๊ณผ index ๊ฐ’์„ ํ‘œ์‹œ ํ• ์ˆ˜์žˆ์Œ
  • 10. Helper: Built -in โ€ข if : context ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‚ฌ์šฉ โ€ข if ๋Š” ํ•ด๋‹น argument ๊ฐ€ falsy ์ผ๋•Œ ( false, undefined, null, โ€œโ€ , [] ) ์ผ๋•Œ ๋™์ž‘ ํ•˜์ง€ ์•Š๋Š”๋‹ค. โ€ข else ์™€ ๊ฐ™์ด ์ฃผ๋กœ ๊ฐ™์ด ์‚ฌ์šฉ ๋จ โ€ข unless : if helper ์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…์œผ๋กœ ๊ฐ’์ด falsy ์ผ๋•Œ ๋ Œ๋”๋ง ๋œ๋‹ค. โ€ข log : ํ…œํ”Œ๋ฆฟ์ด ์‹คํ–‰ ๋˜๋Š” ๋™์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ๋กœ๊น… ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ : {{log โ€œlookโ€}}
  • 11. Helpers: Custom โ€ข ๊ธฐ๋ณธ helper ๋ฅผ ์ œ์™ธ ํ•˜๊ณ  ๋‹ค๋ฅธ ๋™์ž‘์„ ํ•˜๋Š” helper ๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Œ โ€ข Handlebars.registerHelper() ๋ฅผ ์‚ฌ์šฉ โ€ข registerHelper์˜ return ๊ฐ’์€ ์ž๋™์œผ๋กœ escape ์ฒ˜๋ฆฌ๊ฐ€ ๋จ : โ€ข escape ๋Š” http://www.freeformatter.com/html-escape.html ์ฐธ์กฐ โ€ข escape ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, return ํ•˜๊ธฐ์ „ new Handlebars.SafeString( [return value] ); ํ•ด์ฃผ๊ณ  return์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ] โ€ข ํ—ฌํผ ๋‹ค์Œ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฐ’๋“ค์€ helper์˜ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค ( ์ˆœ์„œ์— ๋”ฐ๋ผ..)
  • 12. Helpers: Custom โ€ข Hash Arguments โ€ข custom helper ๋ฅผ ๋งŒ๋“ค๋•Œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กฐ๊ฑด ๊ฐ’๋“ค์„ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์Œ โ€ข key = value ๋กœ ๋„ฃ์€ ์ธ์ž๋“ค์€ options.hash.key = value ๋กœ ์ €์žฅ๋˜์–ด์žˆ์Œ โ€ข hash ๋Š” ๋งˆ์ง€๋ง‰ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. โ€ข
  • 13. Comments โ€ข {{! }} or {{!-- --}} ๋ฅผ ์‚ฌ์šฉ โ€ข HTML ๋‚ด์—์„œ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ• ๋•Œ ์‚ฌ์šฉ ์œ„ 2 ํฌ๋งท ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. โ€ข ํ•ด๋‹น Comment๋Š” ์ตœ์ข… HTML ์—์„œ๋Š” ์•ˆ๋ณด์ž„ โ€ข HTML ์—์„œ ๋ณด์—ฌ์ง€๋Š” Comment ๋ฅผ ์›ํ•œ๋‹ค๋ฉด <!-- -->
  • 14. Utility โ€ข ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ. ์ฃผ๋กœ string ์ฒ˜๋ฆฌ ๋ฐ์— ์œ ์šฉ ํ•จ โ€ข Handlebars.Utils.escapeExpression(string) โ€ข HTML ๊ณผ ํƒœ๊ทธ๋“ค์„ String ์œผ๋กœ ํ‘œํ˜„ : new Handlebars.SafeString().toString() ๊ณผ ๋™์ผํ•จ โ€ข Handlebars.Utils.isEmpty(value) โ€ข value ์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จ โ€ข Handlebars.Utils.extend(obj, value) โ€ข obj ์— value ํ™•์žฅ ( $.extend ์™€ ๋™์ผ ) โ€ข Handlebars.Utils.toString(obj, value) โ€ข toString ๊ณผ ๋™์ผ โ€ข Handlebars.Utils.isArray(obj, value) โ€ข obj ๊ฐ€ array ์ธ์ง€ ํŒ๋‹จ โ€ข Handlebars.Utils.isFunction(obj, value) โ€ข obj ๊ฐ€ function์ธ์ง€ ํŒ๋‹จ
  • 15. Supported Environments โ€ข EcamScript 3์ด ๋™์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ฉด ๋™์ž‘ํ•˜๊ฒŒ ์„ค๊ณ„ โ€ข Node.js โ€ข Chrome โ€ข Firefox โ€ข Safari 5+ โ€ข Opera 11+ โ€ข IE 6+