Node.js 如何在Handlebar视图中连接字符串

Node.js 如何在Handlebar视图中连接字符串,node.js,express,handlebars.js,express-handlebars,handlebarshelper,Node.js,Express,Handlebars.js,Express Handlebars,Handlebarshelper,我编写了一个帮助函数来帮助我格式化URL,它是一些对象属性的组合。如何在“把手”视图中连接此属性 辅助功能 const url = (link)=>{ return process.env.URL+'/'+link.replace(/ /gi,'-').toLowerCase(); }; 我的观点 <a href="{{url 'samples/'+this.name+'/'+this.class+'/'+this.id}}">{{this.name}}</a&

我编写了一个帮助函数来帮助我格式化URL,它是一些对象属性的组合。如何在“把手”视图中连接此属性

辅助功能

const url = (link)=>{
    return process.env.URL+'/'+link.replace(/ /gi,'-').toLowerCase();
};
我的观点

<a href="{{url 'samples/'+this.name+'/'+this.class+'/'+this.id}}">{{this.name}}</a>

要做到这一点,您可以创建一个帮助器来连接字符串,并将连接的字符串传递给
url
帮助器

,在这个对象中,您将发现(您猜到了)调用函数时传递给函数的参数

使用这个
arguments
对象,我们可以为handlebar.js创建一个帮助器,让我们可以连接任意数量的字符串

因为(如文档所述,
参数
对象是一个类似于对象的数组,我们必须从中创建一个实际数组,我们可以使用它使用
数组将所有内容连接在一起。连接
使其尽可能简单

Handlebars.registerHelper('concat', function() {
    return [...arguments].join('');
});
但为什么会这么简单,对吗

我在尝试此解决方案时发现,
arguments
对象中的最后一个元素是一个对象,其中包含有关所使用帮助器的一些信息,如名称

为了使这项工作在考虑到一点点信息的情况下进行,我们必须对数组进行切片,以便删除最后一个元素,然后将其连接起来

Handlebars.registerHelper('concat', function() {
    arguments = [...arguments].slice(0, -1);
    return arguments.join('');
});
我们现在有了一个助手,可以用来连接我们想要的任何东西,剩下的唯一要做的就是将它传递给另一个助手,在本例中是
url
helper

{{url (concat 'samples/' this.name '/' this.class '/' this.id)}}
^我发现handlebar.js显然对这一点有原生支持

我希望这对我有所帮助,而且我在没有正确解释的情况下,不会用勺子喂得太多