所以我开始使用 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.wiki
或 exports.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/