āđāļŠāļĢāđŒ

"Lit-html" first time: unsafeHTML vs. templateContent vs. eval

āļ­āļąāļžāđ€āļ”āļ—āļĨāđˆāļēāļŠāļļāļ”: 19 āļĄ.āļ„. 2025
128 āļœāļđāđ‰āđ€āļ‚āđ‰āļēāļŠāļĄ

āđ€āļĄāļ·āđˆāļ­āļŠāļ­āļ‡āļ§āļąāļ™āļāđˆāļ­āļ™āđ€āļžāļīāđˆāļ‡āđ„āļ”āđ‰āļ”āļđāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ” Lit āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āđ‚āļ›āļĢāđ€āļˆāļ„āļ—āđŒāļ—āļĩāđˆāļ™āļģāđ€āļŠāļ™āļ­āđāļ™āļ§āļ—āļēāļ‡āļžāļąāļ’āļ™āļē Web Components āļ‹āļķāđˆāļ‡āļ”āļđāđāļĨāđ‰āļ§āļ‡āđˆāļēāļĒāļāļ§āđˆāļē polymer āļ—āļĩāđˆāļŦāļĒāļļāļ”āļžāļąāļ’āļ™āļēāđāļĨāđ‰āļ§āđāļĨāļ°āđāļ™āļ°āļ™āļģāđƒāļŦāđ‰āļĒāđ‰āļēāļĒāļĄāļēāđƒāļŠāđ‰ Lit (āļ—āļąāđ‰āļ‡āļ„āļđāđˆāđ€āļ›āđ‡āļ™āđ‚āļ›āļĢāđ€āļˆāļ„āļ—āđŒāļ‚āļ­āļ‡ Google) āđ„āļĄāđˆāļĢāļđāđ‰āļ§āđˆāļēāļœāļĄāđ„āļ›āļ­āļĒāļđāđˆāđ„āļŦāļ™āļˆāļķāļ‡āđ„āļĄāđˆāđ„āļ”āđ‰āļ•āļēāļĄāļ‚āđˆāļēāļ§āļ„āļĢāļēāļ§āđ€āļĨāļĒ āļˆāļ™āļ•āļ­āļ™āļ™āļĩāđ‰āļ­āļ­āļ version 3 āļĄāļēāđāļĨāđ‰āļ§
 
āļ„āļ§āļēāļĄāļ›āļĢāļ°āļ—āļąāļšāđƒāļˆāđāļĢāļ āļ›āļĢāļąāļŠāļāļēāļ„āļ§āļēāļĄāđ€āļĢāļĩāļĒāļšāļ‡āđˆāļēāļĒ āļĨāļ°āļ—āļīāđ‰āļ‡āļžāļīāļ˜āļĩāļāļĢāļĢāļĄāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļ‚āļķāđ‰āļ™āđ‚āļ›āļĢāđ€āļˆāļ„āļ—āđŒāļ”āđ‰āļ§āļĒāļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ build tools āļĄāļēāļāļĄāļēāļĒāļ•āļēāļĄāļĒāļļāļ„āļŠāļĄāļąāļĒ āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļīāđˆāļĄāļ—āļ”āļĨāļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āļ”āđ‰āļ§āļĒāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒ HTML āđ„āļŸāļĨāđŒāđ€āļ”āļĩāļĒāļ§ āđ€āļ›āļīāļ”āļ”āļđāļˆāļēāļ browser āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĄāļĩāđāļĄāđ‰āļāļĢāļ°āļ—āļąāđˆāļ‡ Live Server
 
āđƒāļŠāđˆāļ„āļĢāļąāļš! āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ‡āđˆāļēāļĒāđāļ„āđˆāļ™āļĩāđ‰āđ€āļ­āļ‡ āđ€āļŦāļĄāļ·āļ­āļ™āļ„āļĢāļąāđ‰āļ‡āļŦāļ™āļķāđˆāļ‡āļ—āļĩāđˆāđ€āļĢāļēāđƒāļŠāđ‰āđāļ„āđˆ notepad āļāđ‡āļĨāļ­āļ‡āđ€āļ‚āļĩāļĒāļ™āđ€āļ§āđ‡āļšāđ„āļ”āđ‰

āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļĩāđˆāļŠāļģāļĢāļ§āļˆāļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļĢāđˆāļēāļ§ āđ† āļžāļšāļ§āđˆāļē āđāļāđˆāļ™āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ lit āļ­āļĒāļđāđˆāļ—āļĩāđˆāļāļēāļĢāđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļˆāļēāļāļĄāļēāļ•āļĢāļāļēāļ™ JavaScript ES6 (2015) Template Literal āđ€āļžāļīāđˆāļĄ htmlāđ€āļ‚āđ‰āļēāļĄāļēāļ—āļģāđƒāļŦāđ‰āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āļ—āļĩāđˆāļĄāļĩ HTML syntax āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ„āļ”āđ‰āļ āļēāļĒāđƒāļ™āđ„āļŸāļĨāđŒ .js āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡ compile āļŦāļĢāļ·āļ­āđƒāļŠāđ‰ build tools
 

const content = html`<h1>Hello ${name || "World"}</h1>`;
 
āļ—āļĩāđˆāļŠāļģāļ„āļąāļāļāļ§āđˆāļēāļ™āļąāđ‰āļ™ html template āļŠāļēāļĄāļēāļĢāļ–āļ™āļģāļĄāļēāđƒāļŠāđ‰āļāļąāļšāđ‚āļ„āđ‰āļ”āļ—āļąāđˆāļ§āđ„āļ› āđ‚āļ”āļĒāđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļœāļđāļāļ­āļĒāļđāđˆāđƒāļ™ LitElement āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ āļĄāļĩ monorepo lit-html āđāļĒāļāļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™ standalone package
 
āļ›āļĢāļ°āđ€āļ”āđ‡āļ™āļ—āļĩāđˆāļœāļĄāļŠāļ™āđƒāļˆāđāļĨāļ°āļžāļĒāļēāļĒāļēāļĄāļŦāļēāļĄāļēāļ•āļĨāļ­āļ”āļ„āļ·āļ­ āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ– embedded HTML āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡ compile āđƒāļŦāļĄāđˆ āļ‹āļķāđˆāļ‡āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āđāļĒāļāļ‡āļēāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ developer āļ—āļĩāđˆāļ”āļđāđāļĨāđ‚āļ„āđ‰āļ”āđ‚āļ›āļĢāđāļāļĢāļĄ āļāļąāļš implementer āļ—āļĩāđˆ customize āļ‡āļēāļ™āđƒāļŦāđ‰āļāļąāļšāđ„āļ‹āļ•āđŒāļ•āđˆāļēāļ‡ āđ† āļ—āļĩāđˆāļ”āļđāđāļĨ
 
Single HTML with CDN
 
āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļˆāļēāļāļ—āļ”āļŠāļ­āļšāđ€āļ‚āļĩāļĒāļ™ HTML āđ„āļŸāļĨāđŒāđ€āļ”āļĩāļĒāļ§ āđāļĨāđ‰āļ§āđ€āļ›āļīāļ”āđƒāļ™ browser āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĄāļĩ server āļŠāļēāļĄāļēāļĢāļ– import package lit-html āļˆāļēāļ CDN āļĄāļĩāđƒāļŦāđ‰āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰ unpkg āļāļąāļš jsdelivr (minified)
 
āđƒāļŠāđ‰ text editor āļŠāļĢāđ‰āļēāļ‡āđ„āļŸāļĨāđŒāđƒāļŦāļĄāđˆāļŠāļ·āđˆāļ­ lit-html.html 
copy&paste āđ‚āļ„āđ‰āļ”āļ”āđ‰āļēāļ™āļĨāđˆāļēā
save āđāļĨāđ‰āļ§āđ€āļ­āļē path āļ‚āļ­āļ‡āđ„āļŸāļĨāđŒāđ„āļ›āđ€āļ›āļīāļ”āļ”āđ‰āļ§āļĒ browser 

<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';

render(html`<h1>Hello World</h1>`, document.body)
</script>
 
āļ„āļģāļŠāļąāđˆāļ‡ html āđƒāļŠāđ‰āļāļąāļš template literal āļ”āļąāļ‡āļ—āļĩāđˆāļāļĨāđˆāļēāļ§āļĄāļēāđāļĨāđ‰āļ§ 
 
āļŠāđˆāļ§āļ™āļ„āļģāļŠāļąāđˆāļ‡ render āđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļšāđ€āļ­āļēāļœāļĨāļĨāļąāļžāļ˜āđŒāļˆāļēāļ html template āļ™āļąāđ‰āļ™āđ„āļ›āđƒāļŠāđˆāđƒāļ™ HTML element <body> āđ€āļžāļ·āđˆāļ­āđāļŠāļ”āļ‡āļœāļĨāđƒāļ™ browser

āļ•āđˆāļ­āđ„āļ›āļœāļĄāļ—āļ”āļŠāļ­āļš render āđ‚āļ”āļĒāļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļ›āđ‡āļ™ text āļāļąāļšāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļœāđˆāļēāļ™ html template
 
āļĨāļ­āļ‡āļŠāļąāļ‡āđ€āļāļ•āļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļĩāđˆāđ„āļ”āđ‰ āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļēāļ‚āđ‰āļ­āļ„āļ§āļēāļĄ text āđ„āļĄāđˆāļ–āļđāļāđāļ›āļĨāļ‡āđ€āļ›āđ‡āļ™ element 

<!doctype html>
<html>
<!---->
<body>
<div id="text"></div>
<div id="html"></div>
</body>

<!---->
<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';

render(`<h1>Hello World</h1>`, document.querySelector('div#text'))
render(html`<h1>Hello World</h1>`, document.querySelector('div#html'))

</script>
</html>
 
unsafeHTML( text )
 
āļ•āļąāļ§ lit-html āđ€āļ­āļ‡āļĄāļĩ built-in directive unsafeHTML āļŠāļēāļĄāļēāļĢāļ–āđāļ—āļĢāļ external HTML āđ€āļ‚āđ‰āļēāđ„āļ›āđ„āļ”āđ‰ 
 
āļŠāļĄāļĄāļ•āļīāļ§āđˆāļēāļĄāļĩ userdata āļ‹āļķāđˆāļ‡āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāļŸāļīāļĨāļ”āđŒ name, fullname āđāļĨāļ° profileHTML āļ—āļĩāđˆāđ€āļ›āđ‡āļ™ embedded HTML āđ€āļžāļ·āđˆāļ­āđƒāļŠāđ‰āļ—āļ”āļŠāļ­āļš
 
āđ€āļžāļīāđˆāļĄ import package unsafe-html 
āđ€āļžāļīāđˆāļĄ <div id="profile"></div> 
āđ€āļžāļīāđˆāļĄ render profileHTML 

āļœāļĨāļĨāļąāļžāļ˜āđŒāļˆāļēāļāđ‚āļ„āđ‰āļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡ āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļē unsafeHTML āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ‰āļžāļēāļ°āđāļ›āļĨāļ‡ HTML text āđ€āļ›āđ‡āļ™ element āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™ nested template āđ„āļ”āđ‰ āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđāļ—āļ™āļ—āļĩāđˆāļ„āđˆāļēāļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ ${} 

<!doctype html>
<html>
<!---->
<body>

<div id="greet"></div>
<hr/>
<div id="profile" style="border:solid thin; padding:8px;"></div>

</body>

<!---->
<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';
import {unsafeHTML} from 'https://unpkg.com/lit-html@3.1.2/directives/unsafe-html.js';

const userdata = {
name: 'John',
fullname: 'John Doe',
profileHtml: [
'<p>',
' <b>Name:</b> ${userdata.name}<br/>',
' <b>Full Name:</b> ${userdata.fullname}<br/>',
'</p>',
].join('')
}

const greetHTML = _data => (html`
<h1>Hello ${_data?.name || 'World'}</h1>
`)

render(greetHTML(userdata), document.querySelector('div#greet'))

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${unsafeHTML(_data?.profileHtml)}</div>
`)

render(profileHTML(userdata), document.querySelector('div#profile'))

</script>
</html>
 
templateContent(elem)
 
āđƒāļŠāđ‰ built-in directive templateContent āđāļ—āļ™āļ—āļĩāđˆāļˆāļ° embedded āđ„āļ§āđ‰āđƒāļ™ text āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđ€āļ›āđ‡āļ™āđ€āļ­āļēāđ„āļ§āđ‰āđƒāļ™ HTML element <template>..</template>āļ„āļĨāđ‰āļēāļĒāļāļąāļšāļāļĢāļ“āļĩāļ‚āļ­āļ‡ unsafeHTML āļāđˆāļ­āļ™āļŦāļ™āđ‰āļēāļ™āļĩāđ‰
 

<template id="profile">
<p>
<b>Name:</b> ${userdata.name}<br/>
<b>Full Name:</b> ${userdata.fullname}<br/>
</p>
</template>
 
āļžāļ­āđ€āļ‚āļĩāļĒāļ™ template āļ”āđ‰āļ§āļĒāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ HTML āđāļšāļšāļ™āļĩāđ‰ āļœāļĄāļžāļ­āļˆāļ°āļ™āļķāļāļ–āļķāļ‡āļ—āļēāļ‡āđ€āļĨāļ·āļ­āļāļ—āļĩāđˆāļ­āļēāļˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāđ„āļ”āđ‰āļĄāļēāļāļ‚āļķāđ‰āļ™ āđāļ•āđˆāļ™āđˆāļēāđ€āļŠāļĩāļĒāļ”āļēāļĒāļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļĩāđˆāđ„āļ”āđ‰āļāđ‡āđ„āļĄāđˆāļ•āđˆāļēāļ‡āļāļąāļ™ āļŠāļēāļĄāļēāļĢāļ–āđ€āļ­āļē element āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āđ„āļ§āđ‰āđƒāļ™ <template> āļĄāļēāđƒāļŠāđ‰āđ„āļ”āđ‰ āđāļ•āđˆāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļ—āļ™āļ„āđˆāļē ${..}

<!doctype html>
<html>
<!---->
<body>
<div id="greet"></div>
<hr/>
<div id="profile" style="border:solid thin; padding:8px;"></div>

<template id="profile">
<p>
<b>Name:</b> ${userdata.name}<br/>
<b>Full Name:</b> ${userdata.fullname}<br/>
</p>
</template>
</body>

<!---->
<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';
import {templateContent} from 'https://unpkg.com/lit-html@3.1.2/directives/template-content.js';

const userdata = {
name: 'John',
fullname: 'John Doe',
}

const greetHTML = _data => (html`
<h1>Hello ${_data?.name || 'World'}</h1>
`)

render(greetHTML(userdata), document.querySelector('div#greet'))

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${templateContent(document.querySelector('template#profile'))}</div>
`)

render(profileHTML(userdata), document.querySelector('div#profile'))

</script>
</html>
 
eval( html`" +  + `" )
 
āļĄāļĩāļ„āļģāļ–āļēāļĄāđƒāļ™ StackOverflow āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāđƒāļŠāđ‰ external text āļāļąāļš Lit āđāļĨāļ°āļ„āļģāļ•āļ­āļšāļŦāļ™āļķāđˆāļ‡āļšāļ­āļāļ§āđˆāļē āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰ eval() āđ„āļ”āđ‰

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${eval("html`" + (_data?.profileHtml) + "`")}</div>
`)
 
āļ‡āļēāļ™āļ—āļĩāđˆāļœāđˆāļēāļ™āļĄāļēāļ‚āļ­āļ‡āļœāļĄ āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļˆāļēāļ eval āļŦāļĨāļēāļĒāļ­āļĒāđˆāļēāļ‡ āđ€āļŠāđˆāļ™ āļāļēāļĢāļ­āļ­āļāđāļšāļšāļˆāļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ„āļīāļ”āđ€āļĨāļ‚ āđ€āļĄāļ·āđˆāļ­āļœāļđāđ‰āđƒāļŠāđ‰āļ„āļĩāļĒāđŒāļ•āļąāļ§āđ€āļĨāļ‚ 10+2+3 āļāđ‡āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ eval("10+2+3") āļ„āļģāļ™āļ§āļ“āļ„āļģāļ•āļ­āļšāđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļ—āļģāļ­āļ°āđ„āļĢāļ‹āļąāļšāļ‹āđ‰āļ­āļ™ 
 
āļāļĢāļ“āļĩāļ‚āļ­āļ‡ lit-html āļ–āđ‰āļēāđƒāļŠāđ‰ eval āđ„āļ”āđ‰āļ™āđˆāļēāļˆāļ°āđ€āļ›āļīāļ”āđ‚āļ­āļāļēāļŠāļ‚āļ­āļ‡āļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļ”āđ‰āļ­āļĩāļāļĄāļēāļāļĄāļēāļĒ

<!doctype html>
<html>
<!---->
<body>

<div id="greet"></div>
<hr/>
<div id="profile" style="border:solid thin; padding:8px;"></div>

</body>

<!---->
<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';

const userdata = {
name: 'John',
fullname: 'John Doe',
profileHtml: [
'<p>',
' <b>Name:</b> ${userdata.name}<br/>',
' <b>Full Name:</b> ${userdata.fullname}<br/>',
'</p>',
].join('')
}

const greetHTML = _data => (html`
<h1>Hello ${_data?.name || 'World'}</h1>
`)

render(greetHTML(userdata), document.querySelector('div#greet'))

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${eval("html`" + (_data?.profileHtml) + "`")}</div>
`)

render(profileHTML(userdata), document.querySelector('div#profile'))

</script>
</html>
 
innerHTML
 
āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰ eval āđ‚āļ”āļĒāđ€āļ­āļē innerHTML āļ‚āļ­āļ‡ elem āļ—āļĩāđˆāļ—āļģāđ„āļ§āđ‰āđƒāļ™ <template> āļĄāļēāđƒāļŠāđ‰āđ„āļ”āđ‰āđ€āļŠāđˆāļ™āļāļąāļ™
 

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${eval("html`" + document.querySelector('template#profile').innerHTML + "`")}</div>
`)

<!doctype html>
<html>
<!---->
<body>
<div id="greet"></div>
<hr/>
<div id="profile" style="border:solid thin; padding:8px;"></div>

<template id="profile">
<p>
<b>Name:</b> ${userdata.name}<br/>
<b>Full Name:</b> ${userdata.fullname}<br/>
</p>
</template>
</body>

<!---->
<script type="module">
import {html, render} from 'https://unpkg.com/lit-html@3.1.2/lit-html.js';

const userdata = {
name: 'John',
fullname: 'John Doe',
}

const greetHTML = _data => (html`
<h1>Hello ${_data?.name || 'World'}</h1>
`)

render(greetHTML(userdata), document.querySelector('div#greet'))

// profile
const profileHTML = _data => (html`
<h3>Profile</h3>
<div>${eval("html`" + document.querySelector('template#profile').innerHTML + "`")}</div>
`)

render(profileHTML(userdata), document.querySelector('div#profile'))

</script>
</html>

 


 
Attention!
 
āļ–āļķāļ‡āđāļĄāđ‰āļ§āđˆāļē eval āļˆāļ°āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđ„āļ”āđ‰āđƒāļ™āļāļĢāļ“āļĩāļ™āļĩāđ‰ āđāļ•āđˆāļāđ‡āļ„āļ§āļĢāļĢāļ°āļ§āļąāļ‡āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāļŦāļēāļāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ„āļ§āļšāļ„āļļāļĄāļœāļđāđ‰āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļŠāđˆāļ§āļ™ embedded code āđ€āļžāļĢāļēāļ°āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĩāļĒāļ™āđ‚āļ„āđ‰āļ”āđƒāļŦāđ‰āļ—āļ°āļĨāļļāļœāđˆāļēāļ™ script āđƒāļ™ eval() āļĄāļēāđ„āļ”āđ‰ āļ•āļēāļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‚āđ‰āļēāļ‡āļ•āđ‰āļ™ āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ•āļąāļ§āđāļ›āļĢ userdata āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ global āđāļĨāļ° module scope āļĄāļēāđƒāļŠāđ‰āļ•āļĢāļ‡ āđ† āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļēāđ€āļĢāļēāļ­āļēāļˆāđ€āļ‚āđ‰āļēāđ„āļ›āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ„āđˆāļēāđƒāļ™āļ™āļąāđ‰āļ™āđ„āļ”āđ‰āđ€āļŠāđˆāļ™āļāļąāļ™ āļŦāļēāļāļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āđƒāļ™ production āļˆāļĢāļīāļ‡ āļ­āļēāļˆāļžāļīāļˆāļēāļĢāļ“āļēāļ­āļ­āļāđāļšāļšāđƒāļŦāđ‰āļĢāļąāļ”āļāļļāļĄāļāļ§āđˆāļēāļ™āļĩāđ‰ āđ€āļŠāđˆāļ™ āđƒāļŠāđ‰ scopedEval
 


 
āļ­āđ‰āļēāļ‡āļ­āļīāļ‡
 
Lit https://lit.dev/
Polymer https://polymer-library.polymer-project.org/
JavaScript ES6 (2015) Template Literal https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
lit-html standalone https://lit.dev/docs/libraries/standalone-templates/
Lit-Element  How to render template from an external text? https://stackoverflow.com/a/76290324
eval https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
scoped-eval https://github.com/3cp/scoped-eval


āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ™āļĩāđ‰āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļ„āļļāļāļāļĩāđ‰ āđ€āļžāļ·āđˆāļ­āđ€āļžāļīāđˆāļĄāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļ—āļĩāđˆāļ”āļĩāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ‚āļ­āļ‡āļ—āđˆāļēāļ™ āļ—āđˆāļēāļ™āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ„āļ”āđ‰āļ—āļĩāđˆ āļ™āđ‚āļĒāļšāļēāļĒāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§ āđāļĨāļ° āļ™āđ‚āļĒāļšāļēāļĒāļ„āļļāļāļāļĩāđ‰
Powered By MakeWebEasy Logo MakeWebEasy