From a quick look at your approach, I have one concern:
<template id="product">
<h1 class="name"></h1>
...
You seem to use classnames as variable names. What if some other template has a "name" variable too? What if a stylesheet uses it?I prefer simple placeholders. Instead of:
<h1 class="name"></h1>
I would use: <h1>{{NAME}}</h1>