node.js - 在 Express-js 中使用路由

标签 node.js url-routing express

所以我开始使用 Node.js。我在 Nodejs.org 上看到了 Ryan Dahl 的视频。听说他向网站推荐了 Express-js。

我下载了 Express 的最新版本,并开始编写代码。我在/上有一个完全成熟的静态 View ,但是一旦我尝试发送参数,就会收到如下错误:

Cannot GET /wiki

我尝试按照 expressjs.com 上的指南进行操作但是在最新版本中使用路线的方式发生了变化,导致指南无法使用。

指南:

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;
    if (id) {
        // do something
    } else {
        next();
    }
});

由 Express 生成:

app.get('/', routes.index);

当我尝试添加另一条路线时,我的问题出现了。

app.get('/wiki', routes.wiki_show);

我尝试了很多方法,但我不断收到 Cannot GET/wiki (404) 错误。

routes/index.js 看起来像这样:

exports.index = function(req, res) {
    res.render('index', { title: 'Test', articles: articles, current_article: current_article, sections: sections })
};

我在那里做的唯一一件事就是添加一些参数(同一个文件中的数组),这就是我的工作。但是当我复制内容并将 exports.index 更改为 exports.wikiexports.wiki_show 我仍然得到 Cannot GET/wiki 错误。

谁能向我解释我在这里缺少什么? - 谢谢。

最佳答案

所以,在我创建了我的问题之后,我在右侧得到了这个相关列表,其中有一个类似的问题:Organize routes in Node.js .

该帖子中的答案链接到 Express repo on GitHub并建议查看'route-separation ' 例子。

这帮助我更改了我的代码,现在我可以使用它了。 - 感谢您的意见。

我的实现最终看起来像这样;

我需要在 app.js 中使用我的路线:

var express = require('express')
  , site = require('./site')
  , wiki = require('./wiki');

然后我像这样添加我的路线:

app.get('/', site.index);
app.get('/wiki/:id', wiki.show);
app.get('/wiki/:id/edit', wiki.edit);

我的应用根目录中有两个名为 wiki.js 和 site.js 的文件,其中包含:

exports.edit = function(req, res) {

    var wiki_entry = req.params.id;

    res.render('wiki/edit', {
        title: 'Editing Wiki',
        wiki: wiki_entry
    })
}

关于node.js - 在 Express-js 中使用路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864626/

相关文章:

node.js - 类型错误 : Cannot read property 'authenticate' of null

javascript - 如何避免在 AngularJS 中硬编码 URL(或路由)? (提供网址解析)

php - 如何使用 Zend Router 在 URL 中添加本地化

node.js - 无法基于 TutorialsPoint 上的 Node.js 教程进行 POST 和 DELETE

javascript - 编译成 CommonJS 不会产生 NodeJS 可用的文件

javascript - 通过额外数据扩展 promise

asp.net - 重定向URL后为什么会出现I'm getting “HTTP Error 403.14 - Forbidden”错误?

javascript - 使用 Passport-local 保护 API

node.js - 在中间件 node.js express 框架中设置 header

mysql - Loopback js mongodb 空或缺少字段