2016-02-09 48 views
1

我有一個模板字符串:模板字符串存儲爲常數

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

我猜不是:[「模板字符串中的所有字符串替換是JavaScript表達式」](https://developers.google.com/web/updates/2015/01/ES6-Template-Strings?hl=zh-CN ) – sennett

回答

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

注意背部剔引號嵌套在正規的報價。

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中的持久性相結合。只要明白它是「用戶當心」。