router.get("/", function(req, res) {
res.render("index", {"title":"express"});
});
这段代码的意思是当访问主页时,调用ejs模板引擎,来渲染index.ejs模板文件(即将title变量全部替换为字符串Express),生成静态页面并显示在浏览器中。
我们来做一些修改,以上代码实现了路由的功能,我们当然可以不要routes/index.js文件,把实现路由功能的代码放到app.js里,我们当然可以不要routes/index.js文件,把实现路由功能的代码都放在app.js里,但随着时间的推移app.js会变得臃肿难以维护,这也违背了代码模块化的思想,所以我们把实现路由功能的代码都放在routes/index.js里。官方给出的写法是在app.js中实现了简单的路由分配,然后再去index.js中找到对应的路由函数,最终实现路由功能。我们不妨把路由控制器和实现路由共鞥男的函数都放到index.js里,app.js中只有一个总的路由接口。
最终将app.js修改为
var express require("express");
var path = require("path");
var favicon = require("server-favicon");
var logger = require("morgan");
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var routes = require("./routes/index");
var app = express();
app.set("port", process.env.PORT || 3000);
app.set("view", path.join(_dirname, "views"));
app.set("view engine", "ejs");
//app.use(favicon(__dirname + "/public/favicon.ico"));
app.use(logger("dev"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
routes(app);
app.listen(app.get("port"), function() {
console.log("Express server listening on port" + app.get("port"));
});
修改index.js如下:
module.exports = function(app) {
app.get("/", function(req, res) {
res.render("index", {title:"Express"});
});
}
路由规则:
express封装了多种http请求方式,我们主要只是用get和post两种,即app.get()和app.post()。
app.get()和app.post()的第一个参数都为请求的路径,第二个参数为处理请求的回调函数,回调函数有两个参数分别是req和res,代表请求信息和响应信息。
路径请求及对应的获取路径有以下几种形式:
req.query //GET /search?q=tobi+ferret req.query.q // => "tobi ferret" //GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse req.query.order // => "blue" req.query.shoe.type // => "converse"
req.body //POST user[name]=tobi&user[email][email protected] req.body.user.name // => "tobi" req.body.user.email // => "[email protected]" //POST{"name":"tobi"} req.body.name // => "tobi"
req.params //GET /user/tj req.params.name // => "tj" //GET /file/javascripts/jquery.js req.params[0] // => "javascripts/jquery.js"