如何解决JavaScript中通用模板文字函数的标签 如何定义带标签的模板功能示例代码
我的目标是编写一个类似的标记模板函数
@Cacheable(value = "moviesCache")
public Collection<Movies> getMovies() {
Collection<Movies> moviesList = new ArrayList<>();
//populate moviesList by going to the DB within a Try/Catch. Return an empty list if it fails or
//a list of movies if it doesn't
return moviesList;
}
@CacheEvict("moviesCache")
public void resetMoviesCache() {
}
...的行为类似于javascript中的默认模板文字函数。
我的第一次尝试是
myTemplateTagFunction`some text ${variable} etc. etc.`
但这很快就消失了...
let myTaggedTemplate = args => `${args}`
肯定有一种更简单的方法来实现我所缺少的吗?
解决方法
也许有更短的方法,但这是我的方法:
const myTaggedTemplate = (strings,...vars) => {
let result = '';
strings.forEach((str,i) => {
result += `${str}${i === strings.length - 1 ? '' : vars[i]}`;
});
return result;
};
,
如何定义带标签的模板功能
如果定义标记的模板函数,则它必须接收字符串数组作为第一个参数,并接收任意数字的表达式作为后续参数。字符串是插入表达式之间(所有${...}
之间)的所有字符串,所有表达式都是放入${...}
中的值。
示例代码
let numExp = 2;
function tagFunction(strings,...expressions) {
let returnString = "";
for (let i = 0; i < expressions.length; i++) {
returnString += strings[i] + expressions[i];
}
returnString += strings[strings.length - 1];
return returnString;
}
console.log(
tagFunction`Using function \"${tagFunction.name}\" with ${numExp} expressions`
);
,
您需要更改功能:
let myTaggedTemplate = (strings,...values) => ...;
并尝试遵循this link
中的示例版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。