码迷,mamicode.com
首页 > 其他好文 > 详细

experss路由工作原理

时间:2015-04-28 20:21:02      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

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]=tobi@learnboost.com

req.body.user.name

// => "tobi"


req.body.user.email

//  => "tobi@learnboost.com"


//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"

 

experss路由工作原理

标签:

原文地址:http://www.cnblogs.com/king-bj/p/4463716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!