I do all of these, however I'll just point out that <template> isn't fully functional in IE11 and below, and even worse is template strings won't work at all. So if you need a cross-browser solution that works in older browsers, document.createElement() is your option.
Also, just a tip for older browsers that don't have <template> - if you want to add a block of multiline HTML or something into the page for templating purposes, you can put whatever you otherwise would have put into <template> in a <script> tag with a custom type="" attribute on it, and then find and work with the content of that tag in JS later:
<script type=text/html>
<h1>Multiline</h1>
<h2>HTML</h2>
<h3>Content</h3>
</script>