Храните шаблоны в теге script, с типом "text/html" или "text/template":
<script type="text/html" id="foobar-tpl">
<div>some content</div>
</script>
<script>
var tpl = document.getElementById('foobar-tpl').innerHTML;
console.log(tpl); // <div>some content</div>
</script>
Сверху на это можно прикрутить JS-шаблонизатор, типа EJS или mustache.js и получить настоящий шаблон, с динамическим содержимым. Вот простейший пример такого шаблона с динамикой (без библиотек):
https://repl.it/repls/NuttyMindlessDivisor
А вообще, в современных реалиях для подобной динамики используются библиотеки React, Vue и прочие.