为了账号安全,请及时绑定邮箱和手机立即绑定

如何为cms使用模板文字?

如何为cms使用模板文字?

catspeake 2021-06-21 13:01:53
我想用我的“mini-cms”用他们自己的语言来问候用户。所有字符串都存储为“文本” - 不可能添加反引号。因此我必须: 1st。将我的 cms 字符串转换为模板字符串("text ${value}" => text ${value}) 2nd。将值添加到此模板字符串中我怎样才能做到这一点?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 = ????    return greetUserInHisLanguage;}
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

模板字符串是一种文字 - 这意味着,它们仅在编译步骤中可用(包括由eval和朋友编译,如另一个答案所示,该答案也警告不要使用它们)。


模板字符串的流式传输是一个 XY 问题。相反,考虑问题本身,您希望通过填充插槽来翻译模板。您可以使用正则表达式来做到这一点,只要您没有在插槽内进行计算(就像使用模板字符串那样)。您还可能希望将局部变量更改为对象属性,以便可以通过名称以编程方式访问它们,而无需eval.


       const context = { name: "Tim" };

       const textResponse = "Hi ${name}, how are you?";

    

       const greetUserInHisLanguage =

           textResponse.replace(/\${(.*?)}/g, (_, name) => context[name]);


       console.log(greetUserInHisLanguage);

如果您需要更复杂的东西,请考虑使用现有的模板库,如 Handlebars。


查看完整回答
反对 回复 2021-06-24
?
侃侃无极

TA贡献2051条经验 获得超10个赞

试试这个,你可以使用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(),因为它容易受到注入攻击


查看完整回答
反对 回复 2021-06-24
  • 3 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信