存储为常量的模板字符串

Template strings stored as constants

本文关键字:字符串 常量 存储      更新时间:2023-09-26

我有一个模板字符串:

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

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

模板字符串无法存储,它们在定义时返回字符串。所以我想你正在寻找一个正则表达式

function getTemplateString (url, value) {
    return url.replace(/'${video1}/g, value)
}

其他选项可能是应用模板的函数:

function getTemplateString (videoId) {
    return `https://player.vimeo.com/video/${videoId}?api=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中的持久性结合起来。只要明白这是"用户当心"。