因此,我开始使用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.index为exports.wiki或时exports.wiki_show,仍然Cannot GET /wiki出现错误。
exports.index
exports.wiki
exports.wiki_show
谁能向我解释我在这里想念的东西吗?- 谢谢。
因此,在创建问题后,我在右侧获得了与此相关的列表,其中包含一个类似的问题:在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 }) }