[英]Using Template Literals with Lodash _.template()
我正在嘗試將模板文字與Lodash的_.template()
以根據另一個函數的響應從JSON文件中選擇一條消息,該函數確定打開/關閉並且對我不起作用。
流:
opencloseResponse.openclose
對象返回open
或close
(假定正在工作,並且未顯示在下面的代碼片段中) _.template()
我以用戶的名字作為first_name
放置messages.open
或messages.close
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]);
Lodash的模板和JavaScript的模板文字完全不同。 如果要繼續使用這些JSON文件,則不會使用JavaScript的模板文字,而只需使用動態屬性訪問即可:
const sendMessage = _.template(messages[opencloseResponse.openclose]);
console.log(sendMessage({ first_name: 'Jeremy' }));
如果要使用模板文字,使它們可重用的方法是將它們包裝在functions中 。 例如,而不是你的messages.json
,你可能有一個messages.js
:
exports.messages = {
"open": (first_name) => `Hello ${ first_name }! We are open!`,
"closed": (first_name) => `Hello ${ first_name }! We are closed!`
};
然后
const messages = require('./messages');
console.log(sendMessage(messages[opencloseResponse.openclose]('Jeremy')));
或者,如果您願意,可以讓函數像Lodash代碼一樣接受對象:
exports.messages = {
"open": ({first_name}) => `Hello ${ first_name }! We are open!`,
// ^----------^-------------------------------------------------- destructuring
"closed": ({first_name}) => `Hello ${ first_name }! We are closed!`
// ^----------^------------------------------------------------ destructuring
};
然后
const messages = require('./messages');
console.log(sendMessage(messages[opencloseResponse.openclose]({first_name: 'Jeremy'})));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.