Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为cms使用模板文本?_Javascript_Node.js - Fatal编程技术网

Javascript 如何为cms使用模板文本?

Javascript 如何为cms使用模板文本?,javascript,node.js,Javascript,Node.js,我想用我的“迷你cms”用他们自己的语言问候用户。所有字符串都存储为“文本”-不可能添加反勾号 因此,我必须: 第一。将我的cms字符串转换为模板字符串(“text${value}”=>text${value}) 第二。将值添加到此模板字符串中 我怎样才能做到这一点 myFunction (language) { const name = "Tim"; // call to the cms for translation // returns "Hi ${name},

我想用我的“迷你cms”用他们自己的语言问候用户。所有字符串都存储为“文本”-不可能添加反勾号

因此,我必须: 第一。将我的cms字符串转换为模板字符串
(“text${value}”=>text${value})
第二。将值添加到此模板字符串中

我怎样才能做到这一点

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

试试这个,你可以用

工作小提琴-

函数myFunction(语言){
const name=“Tim”;
//致电cms进行翻译
//返回“你好${name},你好吗?”;
const textResponse=getTranslation(语言);
//如何将textResponse转换为模板字符串并填写${name}
//和“蒂姆”在一起?
const greetUserInHisLanguage=eval('`+textResponse+'`')//在此处使用模板文本
返回希腊语;
}
函数getTranslation(语言){
return“你好${name},你好吗?”
}
log(myFunction(“西班牙语”))
试试这个,你可以用

工作小提琴-

函数myFunction(语言){
const name=“Tim”;
//致电cms进行翻译
//返回“你好${name},你好吗?”;
const textResponse=getTranslation(语言);
//如何将textResponse转换为模板字符串并填写${name}
//和“蒂姆”在一起?
const greetUserInHisLanguage=eval('`+textResponse+'`')//在此处使用模板文本
返回希腊语;
}
函数getTranslation(语言){
return“你好${name},你好吗?”
}

console.log(myFunction(“西班牙语”)
模板字符串是一种文字-这意味着它们只能在编译步骤中使用(包括由
eval
和friends编译,如另一个答案所示,这也警告不要使用它们)

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

const context={name:“Tim”};
const textResponse=“你好${name},你好吗?”;
希腊语常量=
textResponse.replace(/\${(.*)}/g,(\ux,name)=>context[name]);

console.log(希腊语)模板字符串是一种文字-这意味着它们仅在编译步骤可用(包括由
eval
和friends编译,如另一个答案所示,这也警告不要使用它们)

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

const context={name:“Tim”};
const textResponse=“你好${name},你好吗?”;
希腊语常量=
textResponse.replace(/\${(.*)}/g,(\ux,name)=>context[name]);

console.log(希腊语)
在这种方法中,我将变量引用保存到对象中,而不是它们自己的
var
let/const

这样,您可以使用
方括号
符号,通过通过Regex获取的字符串
访问变量

通过匹配原始字符串(来自CMS)中的所有
${key\u name}
实例,我们可以循环遍历它们,并在迭代实例时逐步替换字符串的每个部分

const详细信息={
姓名:'弗兰克',
年龄:27
}
const replacer=(intpl='')=>{
常量key=intpl.match(/[A-z]+//gm)[0]
if(!(输入详细信息))console.warn(${intpl}中的'key${key}未在详细信息对象`)中找到)
返回详细信息[键]| | intpl
}
常量插值=字符串=>{
const matches=string.match(/\${([A-z]*)}/gm)
返回匹配项。减少((上一个,当前)=>{
返回上一个替换(当前,替换)
},字符串)
}
const replaced=interpolate(“你好${name},你好吗?你是${age},失败${foo}”)

log(已替换)
在这种方法中,我将变量引用保存到对象中,而不是它们自己的
var
let/const

这样,您可以使用
方括号
符号,通过通过Regex获取的字符串
访问变量

通过匹配原始字符串(来自CMS)中的所有
${key\u name}
实例,我们可以循环遍历它们,并在迭代实例时逐步替换字符串的每个部分

const详细信息={
姓名:'弗兰克',
年龄:27
}
const replacer=(intpl='')=>{
常量key=intpl.match(/[A-z]+//gm)[0]
if(!(输入详细信息))console.warn(${intpl}中的'key${key}未在详细信息对象`)中找到)
返回详细信息[键]| | intpl
}
常量插值=字符串=>{
const matches=string.match(/\${([A-z]*)}/gm)
返回匹配项。减少((上一个,当前)=>{
返回上一个替换(当前,替换)
},字符串)
}
const replaced=interpolate(“你好${name},你好吗?你是${age},失败${foo}”)

console.log(已替换)
您需要的是模板引擎,而不是模板文本。您需要的是模板引擎,而不是模板文本。
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;
}