Node.js 在Jade视图中提取段落标记之间的文本
我试图在Jade视图中提取段落标记之间的文本,但它不起作用 我的主题:Node.js 在Jade视图中提取段落标记之间的文本,node.js,pug,express,Node.js,Pug,Express,我试图在Jade视图中提取段落标记之间的文本,但它不起作用 我的主题: <p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p> 我的内容 第二句话 玉景: - va
<p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p>
我的内容 第二句话
玉景:
- var content = post.content.slice('/<p>(.*?)<\/p>/g');
p #{content}
-var content=post.content.slice('/(.*)/g');
p#{content}
结果:
<
<
为什么需要在服务器端的段落标记之间提取文本
这将是我们在客户端js上所做的事情
在您的例子中,
context
应该是通过res.render('view',{context:'My content.})
或res.locals
因此,您可以在Jade视图中处理您的#{context}
如果要在Jade视图中声明变量上下文
应该是
-var context=“我的内容。”
p#{content}
回复
jsdom
code
在代码中
posts[i]
未定义
我想你想迭代帖子,所以你应该在这里使用迭代器
您可以在此处使用async
模块
在这种情况下,map
非常合适
有关文档->
仅供参考,您应该使用控制流库来管理回调代码
否则,就很难维持
我推荐async
我想是regexp,试试这个:(.*)为什么要发布两次相同的wuestion???不,同样的事情。。。因为我在之前的帖子上犯了个错误。。。Jade和NodeJS不仅仅是Javascript。好吧,在你的另一篇文章中,@爆炸药丸是正确的。regexp是/(.*)/g。您只需要删除引号。另外,您还需要其他post.post.content.split(/(.*)/g)中提供的函数//提取所有句子,它不起作用。我需要在段落标记之间获取文本,因为我的帖子有两个视图,“posts”视图包含所有帖子,而“post”视图包含特定帖子。在“posts”视图中,我想从内容中获得一个简短的描述,在“post”视图中,我获得带有标记的内容……您不必使用extract。在包含所有帖子的“posts”视图中,在您从DB查询帖子之后,您可以使用substr likestring.substr(0,10)
获取简短描述并作为参数发送到jade视图。在“post”视图中,您只需从DB查询特定的post,就可以了。为什么要使用exact?是的,我也使用substr()函数,但如果我不删除标记,它看起来像是“我的senten初学者…”!你从DB查询你的帖子?你为什么在里面有标签?好的,我明白了。。。您应该使用dom解析器模块,而不是自己提取。这将更容易和更灵活!试试这个->
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
console.log(posts[i].content);
jsdom.env(
posts[i].content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
posts[i].content = window.$("p").text();
}
);
i++;
res.render('index', {
creations: creations,
posts: posts,
title: "Anthony Cluse | Portfolio"
});
});
});
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
console.log(posts[i].content);
jsdom.env(
posts[i].content,
["http://code.jquery.com/jquery.js"],
function(errors, window) {
posts[i].content = window.$("p").text();
}
);
i++;
res.render('index', {
creations: creations,
posts: posts,
title: "Anthony Cluse | Portfolio"
});
});
});