一尘不染

在Express-js中使用路由

node.js

因此,我开始使用Node.js。我在Nodejs.org上与Ryan
Dahl一起观看了视频,听说他向网站推荐了Express-js。

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

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)错误。

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

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

我唯一在那里做的就是添加一些参数(同一文件中的数组),而我正在工作。但是,当我复制内容并更改exports.indexexports.wiki或时exports.wiki_show,仍然Cannot GET /wiki出现错误。

谁能向我解释我在这里想念的东西吗?- 谢谢。


阅读 218

收藏
2020-07-07

共1个答案

一尘不染

因此,在创建问题后,我在右侧获得了与此相关的列表,其中包含一个类似的问题:在Node.js中组织路由。

该帖子中的答案链接到GitHub上Express回购,并建议查看“
路线分离 ”示例。

这帮助我更改了代码,现在可以正常工作了。- 感谢您的意见。

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

我在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
    })
}
2020-07-07