76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Template Literals
 | |
| localeTitle: Literais de modelos
 | |
| ---
 | |
| ## Literais de modelos
 | |
| 
 | |
| ## Introdução:
 | |
| 
 | |
| Quando queremos usar a variável para fazer uma string, torna-se muito doloroso, pois temos que usar o sinal de + para concatenar e manter o controle de citações.
 | |
| 
 | |
| Agora, com o ES6, podemos criar strings usando backticks e usando marcadores de posição indicados com cifrão e chaves, como $ {expression}.
 | |
| 
 | |
| ```javascript
 | |
| const name='John'; 
 | |
|  const city='London'; 
 | |
|  
 | |
|  Older Style: 
 | |
|  const sentence ='My name is '+ name +'. I live in '+city. 
 | |
|  ES6 way: 
 | |
|  const sentence = `My name is ${name}. I live in ${city}`; 
 | |
|  Here ${name} and ${city}are going to be interpolated by the variable name and city respectively. 
 | |
| ```
 | |
| 
 | |
| ## Cordas MultiLine:
 | |
| 
 | |
| Estilo mais antigo:
 | |
| 
 | |
| Quando queríamos dividir nossa string em várias linhas, tínhamos que usar barras invertidas.
 | |
| 
 | |
| ```javascript
 | |
| const multipleLineString= "We have \ 
 | |
|  multiple lines \ 
 | |
|  here"; 
 | |
| ```
 | |
| 
 | |
| Agora, quando queremos criar uma string mutilina, podemos usar strings de template. Podemos cercar nossa string com backticks. Essa abordagem é extremamente útil quando queremos criar uma marcação html dinâmica.
 | |
| 
 | |
| ```javascript
 | |
| const htmlMarkup = ` 
 | |
|  <html> 
 | |
|  <head></head> 
 | |
|  <title>Template string</title> 
 | |
|  <body>Hello World</body> 
 | |
|  </html>`; 
 | |
| ```
 | |
| 
 | |
| ## Aninhamento de sequências de modelos:
 | |
| 
 | |
| Podemos aninhá-los uns dentro dos outros.
 | |
| 
 | |
| ```javascript
 | |
| const cities =[ 
 | |
|  {name:'Delhi', year: 2010}, 
 | |
|  {name:'Mumbai', year: 2015}, 
 | |
|  {name:'Kolkata', year: 2017}]; 
 | |
|  
 | |
|  
 | |
|  const markup = ` 
 | |
|  <ul> 
 | |
|  ${cities.map(city=>`<li>I lived in ${city.name} in the year ${city.year}</li>`).join('')} 
 | |
|  </ul>`; 
 | |
| ```
 | |
| 
 | |
| Aqui, o operador de junção após a função map remove as vírgulas extras que são adicionadas após cada li.
 | |
| 
 | |
| ## Se declarações e funções
 | |
| 
 | |
| Nós também podemos usar instruções If dentro das strings do template.
 | |
| 
 | |
| ```javascript
 | |
| const data = {name: 'John', city: 'London', birthyear: 1900}; 
 | |
|  const markup = `<div>${data.name} lives in ${data.city}. ${data.birthyear ? `<div>He was born in the year ${data.birthyear}</div>`:''}</div>`; 
 | |
| ```
 | |
| 
 | |
| No exemplo acima, se birthyear for definido, então div com o conteúdo "He born in the year" é gerado, caso contrário não haveria div criado.
 | |
| 
 | |
| Também podemos chamar funções dentro das cadeias de modelo. |