-
HandlebarsJava Script 2020. 8. 4. 16:27
핸들 바의 경우 JavaScript를 사용하여 재사용 가능한 HTML을 생성 할 수있는 템플릿 엔진이 제공됩니다.
또 다른 이점은 핸들 바는 HTML이나 JavaScript를 작성할 때 명확하게 분리된다는 것입니다.
The major steps of using Handlebars in a project:
Add the Handlebars library to your project. — one option is to use a Content Delivery Network (CDN): MDN CDN documentation.
Create a Handlebars script in your HTML file.
In your JavaScript file, grab the HTML stored in the Handlebars script.
Use Handlebars.compile() to return a templating function.
Pass in a context object to the templating function to get a compiled template.
Render the compiled template onto the web page.
핸들 바의 힘은 재사용 성과 확장성에 있습니다.
핸들 바 표현을 통해 이를 달성 할 수 있습니다.
스크립트 내에서 핸들 바 표현식은 이중 괄호로 묶습니다 {{ }}.
중괄호 안의 내용은 자리 표시 자 역할을합니다.
<!DOCTYPE html> <html> <head> <script id="greet" type="text/x-handlebars-template">{{greeting}}</script> <meta charset="utf-8"> <title>Hello World!</title> <link type="text/css" rel="stylesheet" href="public/style.css"> <script src="handlebars.min.js"></script> </head> <body> <div class="container"> <h1>Handlebar Expressions</h1> <div id="hello"> </div> <div class="blinker">|</div> </div> <script src="public/main.js" type="text/javascript"></script> </body> </html>
const source = document.getElementById('greet').innerHTML; const template = Handlebars.compile(source); const context = {greeting : 'Hello World!'} const compiledHtml = template(context); const fill = document.getElementById('hello'); fill.innerHTML = compiledHtml ;
{{if}}
지금까지는 핸들 바 표현식 만 사용하여 템플릿에 값을 삽입했습니다.
값을 삽입하기 전에 특정 객체 속성을 확인하려는 경우 핸들 바는 {{if}}도우미 블록을 제공합니다 .
{{if}}도우미는 비슷합니다 if자바 스크립트의 조건, 그러나 구문에 차이가 있습니다 :
{{#if argument}} // Code to include if the provided argument is truthy {{/if}}
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>GIF!</title> <script src="handlebars.min.js"></script> <link rel="stylesheet" type="text/css" href="public/style.css"> <script id="ifHelper" type="text/x-handlebars-template"> {{#if opinion}} <p>"The correct way to say 'GIF' is GIF!"</p> {{/if}} </script> </head> <body> <div class="bg"> <img class="bg-convo" src="https://s3.amazonaws.com/codecademy-content/courses/learn-handlebars/handlebars+if.svg"> </div> <div id="debate"> </div> </body> <script src="public/main.js" type="text/javascript"></script> </html>
const source = document.getElementById('ifHelper').innerHTML; const template = Handlebars.compile(source); const context = { opinion : true } const compiledHtml = template(context); const debateElement = document.getElementById('debate'); debateElement.innerHTML = compiledHtml;
{{else}}
이전 연습에서는 {{if}}컴파일 된 HTML에 코드 블록이 포함되어야하는지 여부를 결정하는 데 사용 했습니다.
그러나 그 주장이 거짓으로 판명되면 HTML에 빈 섹션이 있습니다!
대신 Handlebar의 {{else}} 표현식을 사용하여 else 섹션 을 만들어 기본 코드 줄을 추가 할 수 있습니다 .{{#if argument}} // Code to include if the provided argument is truthy {{else}} // Code to include if the provided argument is falsy {{/if}}
{{each}}
Handlebars가 제공하는 또 다른 도우미 {{each}}는 배열을 반복 할 수 있는 블록입니다.
{{if}}블록 과 마찬가지로 여는 {{#each}}식과 닫는 {{/each}}식이 있습니다.
내측 {{each}}블록 {{this}}반복의 요소에 대한 자리로서 작용한다.
{{#each someArray}} <p>{{this}} is the current element!</p> {{/each}}
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Each Block[s]</title> <link href="public/style.css" type="text/css" rel="stylesheet"> <script src="handlebars.min.js"></script> <script id="eachHelper" type="text/x-handlebars-template"> {{#each newArray}} <div class="block">{{this}}</div> {{/each}} </script> </head> <body> <h1>Each Block[s]</h1> <div id="display"> </div> <script src="public/main.js" type="text/javascript"></script> </body> </html>
const source = document.getElementById('eachHelper').innerHTML; const template = Handlebars.compile(source); const context = { newArray: [1,2,3,4,5,6,7,8,9,10] }; const compiledHtml = template(context); const displayElements = document.getElementById('display'); displayElements.innerHTML = compiledHtml;
{{this}}
{{this}}를 사용하면 반복되는 요소의 속성에 액세스 할 수 있습니다.
{{#each someArray}} <p>The current shape is: {{this.shape}}!</p> {{/each}}
const context = { someArray: [ {shape: 'Triangle'}, {shape: 'Circle'}, {shape: 'Square'} ] } /* <p>The current shape is: Triangle!</p> <p>The current shape is: Circle!</p> <p>The current shape is: Square!</p> */
Combining "If" and "Each"
'Java Script' 카테고리의 다른 글
[Project] Build a Library (0) 2020.08.11 Classes (0) 2020.08.10 [코드카데미/CODECADEMY] Piano Keys (0) 2020.08.03 DOM Events (0) 2020.07.31 [Codecademy/코드카데미] Chore Door (0) 2020.07.30