模板字符串存储为常量

时间:2016-02-09 10:28:11

标签: javascript string templates interpolation

我有一个模板字符串:

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}) 
}

我可以对常量进行字符串插值吗?

2 个答案:

答案 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中的持久性结合起来。只要明白这是“用户提防”。