环境:node - v0.10.29,npm-1.4.14,express-4.2.0 通过命令创建了ejs模版的工程:express -e ejs helloworld
原始代码:
app.js:
var index = require('./routes/index');
var users = require('./routes/users');
app.use('/', routes);
app.use('/users', users);
index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
module.exports = router;
user.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.send('respond with a resource');
});
module.exports = router;
使用http://localhost:18080/,http://localhost:18080/users 分别进入不同的页面。
后面自己修改了代码,修改后关键地方如下:
app.js:
var index = require('./routes/index');
var users = require('./routes/users');
app.use('/', index.index);
app.use('/users', users.users);
index.js
exports.index = function(req, res){
res.render('index', { title: 'Express v2' +content });
//next();
}
users.js
exports.users = function (req, res) {
console.log(req.session.name);
res.render('queryPassword', { url:"http://www.baidu.com", userName: "chenshengli532", password: "aaaaa8888"});
}
不管使用哪个地址:http://localhost:18080 http://localhost:18080/users,结果都是到了"/"页面。
大家帮忙看下怎么回事,是不是第二种index.js|users.js的写法有问题,还是怎么回事,谢谢。
我在修改后的代码里面,将app.js中路由顺序调整了一下,也能进入不同的界面,但感觉比较二。 app.js
app.use('/users', users.users);
app.use('/', index.index);
你这种写法var router = express.Router();必用 app.use 只是相当于启用 首先USE到index.js
直接res.render()出去了 res.render 内存在一个res.end res.end之后就不能第二次render ‘/user’ 了
var express = require(‘express’); var router = express.Router();
exports.index = function(req, res){ router.get('/’, function(req, res) { res.send(‘respond with a resource’); }); }
exports.users = function (req, res) { router.get('/user’, function(req, res) { console.log(req.session.name); res.render('queryPassword’, { url:"http://www.baidu.com", userName: "chenshengli532", password: "aaaaa8888"}); }) }
像上面那样写,页面一直在请求但无相应,后面在网上查了相关资料,找到另外一种写法。
基本上,后期网站有很多路由的话,路由定义在各自的routes模块中,app.js也不会有太多的代码。不知道是否还有其他更简便的写法。 app.js
var app = express();
var index = require('./routes/index');
var users = require('./routes/users');
index(app);
users(app);
index.js
module.exports = function (app) {
app.get('/', function (req, res) {
res.render('index', { title: 'Express' });
});
app.get('/test', function (req, res) {
console.log(req.session.name);
res.render('queryPassword', { url: "http://www.baidu.com", userName: "chenshengli532", password: "aaaaa8888"});
});
}
users.js
module.exports = function (app) {
app.get('/users', function(req, res) {
console.log(req.session.name);
res.render('queryPassword', { url: "http://www.baidu.com", userName: "chenshengli532", password: "aaaaa8888"});
});
}
@sannychan 使用数据库路由表做分型。
实现手法我简单介绍下吧 app.js var routes = require(‘…/route/index’); app.use(routes);
router/index.js var express = require(‘express’); var router = express.Router(); var sqlget = require(‘…/conf/sql’).check;
router.get('*’,function(req,res){ res.render(sqlget(req.url),config:{}) });
router.post('*’,function(req,res){ res.render(sqlget(req.url),config:{}) });
module.exports = router;
渲染过程还可再做自定义 SQLGET是个同步数据库方法,如果你采用异步库,请写成异步。 数据库 URL -> VIEWS