Ответ 1
Есть ли способ программно построить литерал шаблона?
Нет. "программно" и "буквально" являются антипатичными (за исключением того, что вы находитесь в сфере компиляторов).
Строки шаблонов должны быть лучше названы интерполированными строковыми литералами или так. не путать их с шаблонами. Если вы хотите использовать динамически созданные строки для шаблонов, используйте механизм шаблонов по вашему выбору.
Разумеется, шаблонные литералы могут помочь в реализации таких, и вы можете уйти от чего-то простого, как
function assemble(literal, params) {
return new Function(params, "return `"+literal+"`;"); // TODO: Proper escaping
// ^^^^^^^^ working in real ES6 environments only, of course
}
var template = assemble("Hello, my name is ${name}", "name");
template("Chaim"); // Hello, my name is Chaim