컴퓨터/JavaScript_typescript
[JavaScript] Template literal
수제녹차
2019. 8. 25. 13:20
728x90
반응형
1) json으로 응답 받고, javascript object로 변환 -> 데이터처리 조작 -> Dom에 추가
데이터 + HTML 문자열의 결합이 필요하기 때문에
const data = [
{
name: 'coffee-bean',
order : true,
items: ['americano', 'milk', 'green-tea']
},
{
name: 'starbucks',
order : false,
}
]
// backtick을 사용
const template = `<div>Welcome ${data[0].name}!!</div>`
console.log(template);
2) Tagged Template literals
-> ${} : template으로 지정한 문자열
- 함수이름`(template)`
const data = [
{
name: 'coffee-bean',
order : true,
items : ['americano', 'milk','green-tea']
},
{
name : 'starbucks',
order : false,
}
]
// backtick을 사용한다.
//tags, name, items = 배열, 첫 번째 template literal, 두 번째 template literal
function func(tags, name, items) {
if (typeof items === "undefined") {
items = "<span style='color:red'>주문가능한 상품이 없습니다</span>";
};
return (tags[0] + name + tags[1] + items + tags[2])
}
const template = func`<h2>Welcome ${data[1].name}!!</h2>
<h4>주문 가능 항목</h4><div>${data[1].items}</div>`
console.log(template)
//결과 : <div>Welcome starbucks!!</div>
// <h2> 주문 가능 항목 </h2> <div> 주문가능한 상품이 없습니다 </div>
여기서 tags = ['<div>Welcome',
' !!</div> \n <h2>주문 가능항목</h2><div>',
'</div>']
- forEach를 이용해서 template을 만들고 innerHTML로 html에 넣기
const data = [
{
name: 'coffee-bean',
order : true,
items: ['americano', 'milk', 'green-tea']
},
{
name: 'starbucks',
order : false,
}
]
function func(tags, name, items) {
if (typeof items === "undefined"){
//items = "주문가능한 상품이 없습니다";
items = "<span style='color:red'>주문가능한 상품이 없습니다</span>";
}
return (tags[0] + name + tags[1] + items + tags[2])
}
data.forEach((v) => {
let template= func`<h2>Welcome ${v.name} !!</h2>
<h4>주문 가능 항목</h4> <div>${v.items}</div>`
document.querySelector('#message').innerHTML += template;
})
* Using functions and conditionals in srings

출처 : 모던 자바스크립트 개발을 위한 ES6강좌(inflearn)
반응형