Node.js 模板中的jade(用于nodejs)子字符串

Node.js 模板中的jade(用于nodejs)子字符串,node.js,pug,Node.js,Pug,有谁能告诉我,在jade for nodejs中,我如何将字符串截断为若干个字符/单词,理想情况下,要注意字符串中的HTML标记 这应该类似于Django的truncatechars/truncatewords和truncatechars\uHTML/truncatewords\uHTML过滤器 如果这在翡翠中不存在,哪条路是正确的?我正在启动我的第一个nodejs+express+CouchDB应用程序,可以在nodejs代码中完成,但过滤器似乎更合适。 我也会考虑写一个这样的过滤器(以及其他

有谁能告诉我,在jade for nodejs中,我如何将字符串截断为若干个字符/单词,理想情况下,要注意字符串中的HTML标记

这应该类似于Django的truncatechars/truncatewords和truncatechars\uHTML/truncatewords\uHTML过滤器

如果这在翡翠中不存在,哪条路是正确的?我正在启动我的第一个nodejs+express+CouchDB应用程序,可以在nodejs代码中完成,但过滤器似乎更合适。 我也会考虑写一个这样的过滤器(以及其他的)如果我知道如何:)< /P> 只是一个简单的例子:

// in nodejs:
// body variable comes from CouchDB
res.render('home.jade', { title : "test", featuredNews : eval(body)});

// in home.jade template:
    ul.thumbnails
    each article in featuredNews.rows
        a(href="#"+article.slug)
            li.span4
                div.value.thumbnail
                    img(align='left',src='http://example.com/image.png')
                    p!= article.value.description:truncatewords_html(30)
因此,我编写了truncatewords_html(30)来说明我认为它应该类似于什么

如果您有任何想法,我们将不胜感激

谢谢, Igor

这里有一个小小的“截断单词”功能:

function truncate( value, arg ) {
    var value_arr = value.split( ' ' );
    if( arg < value_arr.length ) {
        value = value_arr.slice( 0, arg ).join( ' ' );
    }
    return value;
}
函数截断(值,arg){
var value_arr=分割值(“”);
if(arg<值\u arr.length){
value=value\u arr.slice(0,arg.join)(“”);
}
返回值;
}

您可以在将字符串发送到模板之前使用它,也可以在模板中使用helper方法。

cheerio是一个很好的小型库,它可以处理jquery和jsdom的子集。那么很容易:

app.helpers({
    truncateWords_html : function(html, words){
       return cheerio(html).text().split(/\s/).slice(0, words).join(" ")
    }
})
然后,在jade模板中使用:

#{truncateWords_html(article.value.description, 30)}

这看起来像是添加任何过滤器的通用方法,万岁!:)

eval(body)
不是必需的。谢谢,这不是问题的重点,但仍然很有帮助!我只是从这一切开始:)这很酷,谢谢,但是有没有一种方法可以“推送”并在模板中使用它,或者只在渲染之前使用它?然后。。这不会考虑字符串中的HTML。啊,抱歉,请阅读最后一行。。。请您详细介绍一下“使用助手方法”好吗?@IgorR如何将此函数添加到视图中?您可以执行res.render('index',{helperFoo:function(){}});,或app.locals.helperFoo=function(){};第一种方法是只在该模板中使用,第二种方法是在所有模板中使用。查找快递助手了解更多信息,祝您好运!