3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
模板字符串是一種文字 - 這意味著,它們僅在編譯步驟中可用(包括由eval和朋友編譯,如另一個(gè)答案所示,該答案也警告不要使用它們)。
模板字符串的流式傳輸是一個(gè) XY 問(wèn)題。相反,考慮問(wèn)題本身,您希望通過(guò)填充插槽來(lái)翻譯模板。您可以使用正則表達(dá)式來(lái)做到這一點(diǎn),只要您沒(méi)有在插槽內(nèi)進(jìn)行計(jì)算(就像使用模板字符串那樣)。您還可能希望將局部變量更改為對(duì)象屬性,以便可以通過(guò)名稱(chēng)以編程方式訪問(wèn)它們,而無(wú)需eval.
const context = { name: "Tim" };
const textResponse = "Hi ${name}, how are you?";
const greetUserInHisLanguage =
textResponse.replace(/\${(.*?)}/g, (_, name) => context[name]);
console.log(greetUserInHisLanguage);
如果您需要更復(fù)雜的東西,請(qǐng)考慮使用現(xiàn)有的模板庫(kù),如 Handlebars。

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
試試這個(gè),你可以使用eval()
myFunction (language) {
const name = "Tim";
// call to the cms for translation
// returns "Hi ${name}, how are you?";
const textResponse = getTranslation(language);
// How to convert textResponse into a template string and fill in ${name}
// with "Tim"?
const greetUserInHisLanguage =eval('`'+textResponse+'`') // use eval()
return greetUserInHisLanguage;
}
工作小提琴-
function myFunction(language) {
const name = "Tim";
// call to the cms for translation
// returns "Hi ${name}, how are you?";
const textResponse = getTranslation(language);
// How to convert textResponse into a template string and fill in ${name}
// with "Tim"?
const greetUserInHisLanguage = eval('`'+textResponse+'`') // use template literals here
return greetUserInHisLanguage;
}
function getTranslation(language) {
return "Hi ${name}, how are you?"
}
console.log(myFunction("spanish"))
值得注意
不推薦使用 eval(),因?yàn)樗菀资艿阶⑷牍?/p>
添加回答
舉報(bào)