我正在尝试传递新闻数组以在屏幕上显示,但是我不知何故在浏览器中得到了空数组
路由/rss.js
... var news = []; ... var this_news = { 'title': item.title, 'description': item.description } news.push(this_news); ... res.render('rss', { title: 'Node.js based RSS reader', newsi: JSON.stringify(news) });
views / rss.jade
extends layout block content h1= title p Welcome to #{title} p Sure why not script(type='text/javascript'). var inews = !{newsi};
编辑
好了,我得出的结论是问题在于我的“非回调逻辑”
那是我的代码:
var FeedParser = require(__dirname + '/../node_modules/feedparser') , request = require(__dirname + '/../node_modules/request'); exports.news = function(req, res){ var news = []; request('http://feeds.feedburner.com/niebezpiecznik/') .pipe(new FeedParser()) .on('error', function(error) { //... }) .on('meta', function (meta) { console.log('===== %s =====', meta.title); console.log('**** %s ****', meta.description); console.log(); }) .on('readable', function() { var stream = this, item; while (item = stream.read()) { var this_news = { 'title': item.title, 'description': item.description } news.push(this_news); } res.render('rss', { title: 'Node.js based RSS reader', newsi: JSON.stringify(news) }); }); };
它几乎可以工作,但是却让我无法处理异常。我该如何处理?
您可以将其作为数组传递,渲染时无需将其字符串化。然后,在玉的一面,如果您只想循环通过,就可以使用&每个。
为了使它作为对象传递给script尽管您使用带有单引号的感叹号,然后解析您的对象以便可以使用它。如果您要将其作为对象传递给脚本,但是不使用Jade的内置迭代,则需要对进行字符串化rss.js。
script
rss.js
extends layout block content h1= title p Welcome to #{title} p Sure why not script(type='text/javascript'). // Pass as regular array here var inews = JSON.parse('!{newsi}'); console.log(inews);