Ø¹ÙØµØ± داخÙÛ <template> ب٠عÙÙØ§Ù Ù
ØÙÛ Ø¨Ø±Ø§Û Ø°Ø®ÛØ±ÙâÛ ÙØ§ÙبâÙØ§Û ÙØ´Ø§ÙÙâÚ¯Ø°Ø§Ø±Û HTML Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯. Ù
Ø±ÙØ±Ú¯Ø± Ù
ØØªÙØ§Û Ø¢Ù Ø±Ø§ ÙØ§Ø¯Ûد٠Ù
ÛâÚ¯ÛØ±Ø¯ ٠تÙÙØ§ اعتبار ÙØÙÛ Ø¢Ù Ø±Ø§ Ø¨Ø±Ø±Ø³Û Ù
ÛâÚ©ÙØ¯Ø اÙ
ا Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
با Ø§Ø³ØªÙØ§Ø¯Ù از JavaScript Ø¨Ù Ø¢Ù Ø¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ú©ÙÛÙ
Ù Ø¨Ø±Ø§Û Ø³Ø§Ø®Øª Ø³Ø§ÛØ± Ø¹ÙØ§ØµØ± از Ø¢Ù Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
در ØªØ¦ÙØ±ÛØ Ù
ÛâØªÙØ§ÙÛÙ
ÙØ± Ø¹ÙØµØ± ÙØ§Ù
Ø±Ø¦Û Ø¯ÛÚ¯Ø±Û Ø±Ø§ در HTML Ø¨Ø±Ø§Û Ø°Ø®ÛØ±ÙâÛ Ú©Ø¯ HTML ÙØ±Ø§Ø± دÙÛÙ
. پس ÚÙ ÚÛØ²Û <template> را خاص Ù
ÛâÚ©ÙØ¯Ø
اÙ٠از ÙÙ
ÙØ Ù
ØØªÙØ§Û Ø¢Ù Ù
ÛâØªÙØ§Ùد ÙØ± HTML Ù
Ø¹ØªØ¨Ø±Û Ø¨Ø§Ø´Ø¯Ø ØØªÛ اگر Ù
عÙ
ÙÙØ§Ù ÙÛØ§Ø² ب٠ÛÚ© تگ Ù
ØØ§Ø·âÚ©ÙÙØ¯Ù داشت٠باشد.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ Ù
ÛâØªÙØ§ÙÛÙ
ÛÚ© ردÛ٠جدÙÙ <tr>را Ø¯Ø§Ø®Ù Ø¢Ù ÙØ±Ø§Ø± دÙÛÙ
:
<template>
<tr>
<td>Contents</td>
</tr>
</template>
Ù
عÙ
ÙÙØ§Ù اگر Ø³Ø¹Û Ú©ÙÛÙ
تگ <tr> را داخ٠Ù
Ø«ÙØ§Ù ÛÚ© <div> ÙØ±Ø§Ø± دÙÛÙ
Ø Ù
Ø±ÙØ±Ú¯Ø± ساختار ÙØ§Ù
عتبر DOM را ØªØ´Ø®ÛØµ Ù
ÛâØ¯ÙØ¯ ٠آ٠را âØ§ØµÙØ§Øâ Ù
ÛâÚ©ÙØ¯Ø ÛØ¹ÙÛ Ø¨ÙâØ·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± ÛÚ© <table> ب٠اطرا٠آ٠اضاÙÙ Ù
ÛâÚ©ÙØ¯. اÙ
ا اÛÙ ÚÛØ²Û ÙÛØ³Øª Ú©Ù Ù
ا Ø¨Ø®ÙØ§ÙÛÙ
. در Ø¹ÙØ¶Ø <template> دÙÛÙØ§Ù ÙÙ
ا٠ÚÛØ²Û را ک٠درÙÙØ´ ÙØ±Ø§Ø± Ù
ÛâØ¯ÙÛÙ
Ø Ø¨Ø¯Ù٠تغÛÛØ± ÙÚ¯Ù Ù
ÛâØ¯Ø§Ø±Ø¯.
Ù
ا ØØªÛ Ù
ÛâØªÙØ§ÙÛÙ
استاÛÙâÙØ§ ٠اسکرÛپتâÙØ§ را ÙÛØ² داخ٠<template> ÙØ±Ø§Ø± دÙÛÙ
:
<template>
<style>
p { font-weight: bold; }
</style>
<script>
alert("Hello");
</script>
</template>
Ù
Ø±ÙØ±Ú¯Ø± Ù
ØØªÙØ§Û Ø¯Ø±ÙÙ <template> را «خارج از Ø³ÙØ¯Â» در ÙØ¸Ø± Ù
ÛâÚ¯ÛØ±Ø¯: استاÛÙâÙØ§ اعÙ
ا٠ÙÙ
ÛâØ´ÙÙØ¯Ø اسکرÛپتâÙØ§ اجرا ÙÙ
ÛâØ´ÙÙØ¯Ø تگ <video autoplay> پخش ÙÙ
ÛâØ´ÙØ¯ Ù ØºÛØ±Ù.
ÙÙØªÛ اÛÙ Ù ØØªÙا را ÙØ§Ø±Ø¯ Ø³ÙØ¯ (document) Ú©ÙÛÙ Ø ÙØ¹Ø§Ù Ù ÛâØ´ÙØ¯ (استاÛÙâÙØ§ اع٠ا٠٠ÛâØ´ÙÙØ¯Ø اسکرÛپتâÙØ§ اجرا Ù ÛâØ´ÙÙØ¯ Ù ØºÛØ±Ù).
ÙØ§Ø±Ø¯ کرد٠template
Ù
ØØªÙØ§Û ÛÚ© template از طرÛÙ ÙÛÚÚ¯Û content آ٠در دسترس است Ú©Ù ÛÚ© DocumentFragment Ù
ØØ³Ùب Ù
ÛâØ´ÙØ¯ â ÙÙØ¹ Ø®Ø§ØµÛ Ø§Ø² گر٠DOM.
Ù
ÛâØªÙØ§ÙÛÙ
با Ø¢Ù Ù
اÙÙØ¯ ÙØ± گرÙâÛ Ø¯ÛÚ¯Ø±Û Ø§Ø² DOM Ø±ÙØªØ§Ø± Ú©ÙÛÙ
Ø Ø¨Ø§ ÛÚ© ØªÙØ§Ùت خاص: زÙ
اÙÛ Ú©Ù Ø¢Ù Ø±Ø§ در جاÛÛ ÙØ±Ø§Ø± Ù
ÛâØ¯ÙÛÙ
Ø ÙÙØ· ÙØ±Ø²ÙØ¯Ø§ÙØ´ ÙØ§Ø±Ø¯ Ø³ÙØ¯ Ù
ÛâØ´ÙÙØ¯Ø ÙÙ Ø®ÙØ¯ DocumentFragment.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
<template id="tmpl">
<script>
alert("Hello");
</script>
<div class="message">Hello, world!</div>
</template>
<script>
let elem = document.createElement('div');
// Clone the template content to reuse it multiple times
elem.append(tmpl.content.cloneNode(true));
document.body.append(elem);
// Now the script from <template> runs
</script>
Ø¨ÛØ§ÛÛØ¯ ÛÚ© Ù
ثا٠از Shadow DOM را از ÙØµÙ ÙØ¨ÙÛ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù از <template> بازÙÙÛØ³Û Ú©ÙÛÙ
:
<template id="tmpl">
<style> p { font-weight: bold; } </style>
<p id="message"></p>
</template>
<div id="elem">Click me</div>
<script>
elem.onclick = function() {
elem.attachShadow({mode: 'open'});
elem.shadowRoot.append(tmpl.content.cloneNode(true)); // (*)
elem.shadowRoot.getElementById('message').innerHTML = "Hello from the shadows!";
};
</script>
در خط (*)Ø Ø²Ù
اÙÛ Ú©Ù tmpl.content را Ú©Ù¾Û Ú©Ø±Ø¯Ù Ù Ø¯Ø±Ø¬ Ù
ÛâÚ©ÙÛÙ
Ø Ø§Ø² Ø¢ÙØ¬Ø§ÛÛ Ú©Ù ÛÚ© DocumentFragment Ø§Ø³ØªØ ÙØ±Ø²Ùدا٠آ٠(ÛØ¹ÙÛ <style> Ù <p>) Ø¨Ù Ø¬Ø§Û Ø®ÙØ¯Ø´ درج Ù
ÛâØ´ÙÙØ¯.
اÛÙ Ø¹ÙØ§ØµØ±Ø Shadow DOM را تشکÛÙ Ù ÛâØ¯ÙÙØ¯:
<div id="elem">
#shadow-root
<style> p { font-weight: bold; } </style>
<p id="message"></p>
</div>
Ø®ÙØ§ØµÙ
Ø¨Ø±Ø§Û Ø¬Ù Ø¹âØ¨ÙØ¯Û:
- Ù
ØØªÙاÛ
<template>Ù ÛâØªÙØ§Ùد ÙØ± HTML با ساختار ÙØÙÛ ØµØÛØ Ø¨Ø§Ø´Ø¯. - Ù
ØØªÙاÛ
<template>بÙâØ¹ÙÙØ§Ù «خارج از Ø³ÙØ¯Â» در ÙØ¸Ø± Ú¯Ø±ÙØªÙ Ù ÛâØ´ÙØ¯Ø Ø¨ÙØ§Ø¨Ø±Ø§Û٠رÙÛ ÚÛØ²Û ØªØ£Ø«ÛØ± ÙÙ Ûâگذارد. - Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
از طرÛÙ JavaScript بÙ
template.contentØ¯Ø³ØªØ±Ø³Û Ù¾ÛØ¯Ø§ Ú©ÙÛ٠٠با Ú©Ù¾Û Ú©Ø±Ø¯Ù Ø¢ÙØ در ÛÚ© کا٠پÙÙÙØª Ø¬Ø¯ÛØ¯ Ø§Ø³ØªÙØ§Ø¯ÙâØ§Ø´ Ú©ÙÛÙ .
تگ <template> ÙÛÚÚ¯ÛâÙØ§Û Ù
ÙØØµØ±Ø¨ÙâÙØ±Ø¯Û Ø¯Ø§Ø±Ø¯Ø Ø²ÛØ±Ø§:
- Ù Ø±ÙØ±Ú¯Ø± ساختار ÙØÙÛ HTML داخ٠آ٠را Ø¨Ø±Ø±Ø³Û Ù ÛâÚ©ÙØ¯ (Ø¨Ø±Ø®ÙØ§Ù Ø§Ø³ØªÙØ§Ø¯Ù از Ø±Ø´ØªÙ ÙØ§Ùب درÙ٠اسکرÛپت).
- â¦Ø§Ù
ا ÙÙ
ÚÙØ§Ù اجاز٠Ù
ÛâØ¯ÙØ¯ ک٠از ÙØ± تگ HTML در Ø³Ø·Ø Ø¨Ø§ÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯Ø ØØªÛ تگâÙØ§ÛÛ Ú©Ù Ø¨Ø¯Ù٠تگâÙØ§Û Ù
ØØµÙرکÙÙØ¯Ù Ù
ÙØ·ÙÛ ÙÛØ³ØªÙد (Ù
Ø«Ù
<tr>). - ÙÙØªÛ Ù
ØØªÙا ÙØ§Ø±Ø¯ Ø³ÙØ¯ Ø´ÙØ¯Ø تعاÙ
ÙÛ Ù
ÛâØ´ÙØ¯: اسکرÛپتâÙØ§ اجرا Ù
ÛâØ´ÙÙØ¯Ø ÙÛØ¯ÛÙÙØ§Û
<video autoplay>پخش Ù ÛâØ´ÙÙØ¯ Ù ØºÛØ±Ù.
Ø¹ÙØµØ± <template> بÙâØ®ÙØ¯ÛâØ®ÙØ¯ ÙÛÚ Ù
کاÙÛØ²Ù
Û Ø¨Ø±Ø§Û ØªÚ©Ø±Ø§Ø±Ø Ø§ØªØµØ§Ù Ø¯Ø§Ø¯ÙâÙØ§ (data binding) ÛØ§ جاÛگزÛÙÛ Ù
ØªØºÛØ±Ùا ÙØ¯Ø§Ø±Ø¯Ø اÙ
ا Ù
ÛâØªÙØ§ÙÛÙ
اÛÙ ÙØ§Ø¨ÙÛØªâÙØ§ را بر رÙÛ Ø¢Ù Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ú©ÙÛÙ
.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)