有人请告诉我如何在jade中使用nodejs我可以将一个字符串截断为多个字符/单词,理想情况下是否意识到字符串中的HTML标记?
这应该类似于Django的truncatechars / truncatewords和truncatechars_html / truncatewords_html过滤器。
如果这在玉中不存在,哪种方式是正确的?我正在开始我的第一个nodejs + express + CouchDB应用程序,并且可以在nodejs代码中执行它,但似乎过滤器更合适。 如果我知道如何:),我还会考虑编写一个像这样的过滤器(和其他人)。
快速说明:
// 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)来说明我认为它应该类似于什么。
欣赏任何想法!
谢谢, 伊戈尔
答案 0 :(得分:2)
这是一个小“truncate_words”函数:
function truncate( value, arg ) {
var value_arr = value.split( ' ' );
if( arg < value_arr.length ) {
value = value_arr.slice( 0, arg ).join( ' ' );
}
return value;
}
您可以在将字符串发送到模板之前使用它,或者使用辅助方法将模板发送到模板中。
答案 1 :(得分:0)
cheerio是一个很好的小库,可以完成jquery和jsdom的一个子集。然后很容易:
app.helpers({
truncateWords_html : function(html, words){
return cheerio(html).text().split(/\s/).slice(0, words).join(" ")
}
})
然后,在玉石模板中使用:
#{truncateWords_html(article.value.description, 30)}
这看起来像添加任何过滤器的通用方法,欢呼! :))