节点 - 快速 - 递归路由

时间:2016-05-03 19:09:51

标签: node.js express

我有一个Node / Express应用程序。在这个应用程序中,我有以下路由设置:

app.use('/article/:title/demo', function(req, res) {
  console.log('load the demo view');
  res.render('article/demo', { title: req.params.title }); 
});    

app.use('/article/:title', function(req, res) {
  console.log('view the article');
  res.render('article/content', { title: req.params.title });
});

我的文章/内容文件加载正常。但是,我的文章/演示会导致递归加载。我不懂为什么。我的/article/demo.html文件如下所示:

<html>
<body>
    <article>
<iframe style="width:100%; height:800px; overflow-y:scroll;" src="./demo/main.html"></iframe>
    </article>    
</body>
</html>

我有一个存在的main.html文件。但是,它没有被渲染。当我看到控制台窗口时,我注意到了 load the demo view 只要我打开浏览器窗口,就会重复打印。我实际上可以看到文章/演示文件在其自身内部加载。但是,我从未看到main.html的内容。我不知道如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当浏览器要求服务器/article/:title/demo时,您的./demo/main.html正在匹配。这可能不是main.html的正确途径。这在很大程度上取决于您如何设置静态资产加载。

答案 1 :(得分:0)

View正在正确呈现您的文件,但无法访问main.html,因为它在静态文件夹中不可用。相对路径加载不起作用,你需要有类似下面的静态文件夹。将文件放在那里。

app.set('view engine', 'ejs'); app.use(express.static(path.join(__dirname, 'public')));// Load static files