76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Template Literals | |||
|  | localeTitle: Литералы шаблонов | |||
|  | ---
## Литералы шаблонов
 | |||
|  | 
 | |||
|  | ## Введение:
 | |||
|  | 
 | |||
|  | Когда мы хотим использовать переменную для создания строки, она становится очень болезненной, поскольку мы должны использовать знак + для конкатенации и отслеживания кавычек. | |||
|  | 
 | |||
|  | Теперь с ES6 мы можем сделать строку с использованием обратных ссылок и с помощью заполнителей, которые обозначены знаком доллара и фигурными фигурными скобками, например $ {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.  | |||
|  | ``` | |||
|  | 
 | |||
|  | ## Строки MultiLine:
 | |||
|  | 
 | |||
|  | Пожилой стиль: | |||
|  | 
 | |||
|  | Когда мы хотели разбить нашу строку на несколько строк, нам пришлось использовать обратную косую черту. | |||
|  | 
 | |||
|  | ```javascript | |||
|  | const multipleLineString= "We have \  | |||
|  |  multiple lines \  | |||
|  |  here";  | |||
|  | ``` | |||
|  | 
 | |||
|  | Теперь, когда мы хотим создать mutiline строку, мы можем использовать строки шаблонов. Мы можем окружить нашу строку обратными окнами. Этот подход чрезвычайно полезен, когда мы хотим создать динамическую разметку html. | |||
|  | 
 | |||
|  | ```javascript | |||
|  | const htmlMarkup = `  | |||
|  |  <html>  | |||
|  |  <head></head>  | |||
|  |  <title>Template string</title>  | |||
|  |  <body>Hello World</body>  | |||
|  |  </html>`;  | |||
|  | ``` | |||
|  | 
 | |||
|  | ## Вложение шаблонных строк:
 | |||
|  | 
 | |||
|  | Мы можем вложить их друг в друга. | |||
|  | 
 | |||
|  | ```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>`;  | |||
|  | ``` | |||
|  | 
 | |||
|  | Здесь оператор объединения после функции карты удаляет дополнительные запятые, которые добавляются после каждого li. | |||
|  | 
 | |||
|  | ## Если утверждения и функции
 | |||
|  | 
 | |||
|  | Мы также можем использовать операторы If внутри строк шаблона. | |||
|  | 
 | |||
|  | ```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>`;  | |||
|  | ``` | |||
|  | 
 | |||
|  | В приведенном выше примере, если определен рождаемость, тогда создается div с содержимым «Он родился в году», иначе не было бы никакого div. | |||
|  | 
 | |||
|  | Мы также можем вызывать функции внутри строк шаблона. |