我有一个模板字符串:
function getTemplateString () {
let videoId = 'qwerty'
return `https://player.vimeo.com/video/${videoId}?api=1`
}
我想将此模板字符串存储在const
中:
const VIMEO_EMBED_URL = `https://player.vimeo.com/video/${videoId}?api=1`
function getTemplateString () {
let videoId = 'qwerty'
// how can I do this next line?
return VIMEO_EMBED_URL.something({videoId: videoId})
}
我可以对常量进行字符串插值吗?
答案 0 :(得分:2)
模板字符串无法存储,它们在定义时会返回一个字符串。所以我想你正在寻找一个 RegExp 。
function getTemplateString (url, value) {
return url.replace(/\${video1}/g, value)
}
其他选项可以是应用模板的函数:
function getTemplateString (videoId) {
return `https://player.vimeo.com/video/${videoId}?api=1`
}
答案 1 :(得分:1)
请注意,反标记引号嵌套在常规引号中。
const VIMEO_EMBED_URL = "`https://player.vimeo.com/video/${videoId}?api=1`";
function getTemplateString() {
let videoId = 'qwerty';
return eval(VIMEO_EMBED_URL);
}
document.write(getTemplateString());
我知道不推荐使用eval
的许多用法,可能包括此用法。 (它们引入了可能的安全问题等)但是,eval
是该语言的一部分,一些JavaScript专家会讨论如何有时使用它。
这个答案确实解决了问题中提出的问题,并且允许编码人员将模板字符串的方便语法和将其存储在const
中的持久性结合起来。只要明白这是“用户提防”。