javascript - 将模板文字与 Lodash _.template() 一起使用

标签 javascript node.js lodash template-literals

我正在尝试将模板文字与 Lodash' _.template() 一起使用根据另一个确定打开/关闭的函数的响应从 JSON 文件中选择消息,但它对我不起作用。

流量:

  • 函数运行逻辑并返回 openclose通过opencloseResponse.openclose对象(假设工作正常且未显示在下面的代码片段中)
  • 使用 Lodash _.template()我把messages.openmessages.close用户的名字为 first_name
  • 显示消息文本

没有模板文字的工作示例

messages.json

{
  "messages": {
    "open": "Hello ${ first_name }! We are open!",
    "closed": "Hello ${ first_name }! We are closed!"
  }
}

app.js

const _ = require('lodash');
const { messages } = require('messages.json');

const sendMessage = _.template(messages.open);
console.log(sendMessage({ first_name: 'Jeremy' }));

output

Hello Jeremy! We are open!

模板文字的失败示例

messages.json

{
  "messages": {
    "open": "Hello ${ first_name }! We are open!",
    "closed": "Hello ${ first_name }! We are closed!"
  }
}

app.js

const _ = require('lodash');
const { messages } = require('messages.json');

const sendMessage = _.template(`messages.${opencloseResponse.openclose}`);
console.log(sendMessage({ first_name: 'Jeremy' }));

output

messages.open

我希望它是我所缺少的简单的东西。一整天都让我发疯。我感谢任何帮助!

最佳答案

您不需要模板文字。

只需使用括号[]表示法即可访问message属性

const sendMessage = await _.template(messages[opencloseResponse.openclose]);

关于javascript - 将模板文字与 Lodash _.template() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517836/

相关文章:

node.js - 如何在 windows node.js 上运行 Mocha 测试(错误 : Cannot find module 'C:\cygdrive\c\Users )

javascript - 使用 Lodash 操作 JSON

javascript - _.assign 仅当属性存在于目标对象中时

javascript - ramda 中的多个数据的管道

javascript - 与 addClass 和 show 相关的 jQuery 代码错误

javascript - 在 IF else 语句中执行函数是否正确?

javascript - Node : how to clone an object

javascript - 如何在单击加载时隐藏除 anchor href 引用的第一个 div 之外的所有内容

javascript - BlueBird Promises 的阅读结果

javascript - 如何保留对象的某些属性?