Express 4.8.x—路由器、响应与渲染
路由器、响应与渲染
简单来说,下面的伪代码函数,就说明了web工作的流程:
// router路由器,根据/mydog知道应该用相应的 handle 处理器来处理这个请求。 router(“/mydog”, function handle(req,res){ req // 请求对象,记录有客户端请求的所有信息,告诉你,他要什么。 res // 响应对象,你可以通过它,把数据交给客户端 }
这就是web工作的流程,very easy。
express也就是做到基础的这一点,并且它也会更完善,让我们这些使用它的人更加轻松愉快。
路由器
express 的路由器表现形式是:
app.get(“/xxx”,function router_handle(req,res){ // 好像和刚才的没什么两样 })
god注意这里的get表示客户端通过get方法进行请求,那么修改后,下面是采用post方法进行请求。
app.post(“/xxx”,function router_handle(req,res){ // 好像和刚才的还是没什么两样,毫无违和感! })
简单点好。复杂很容易,但简化却是最难的,往往真正的好东西,就是那么简单直接。
good当然 get 和post方法之外还可能用到 delete / put 或自己创建的方法,在浏览器不支持,但可以通过一个参数搞定:
<form method=”post”> <input type=”hidden” name=”_method” value=”put” /> </form>
在服务器端需要加入一个插件
var methodOverride = require(“method-override”); app.use(methodOverride('_method'));
app.get / app.post 这种路由的方式不是太好,我们需要更好组织路由的方式,可以采用 express.Router 类创建更好的路由方式。
userRouter.js
// userRouter.js var router = express.Router(); router.get(“/”,function(req,res){ }) router.put(“/update”,function(req,res){ }) module.exports = router;
main.js
sex
…… app.use(“/user”,require(“./userRouter”)); // 加入路由
那么,在浏览器访问时,就可以通过 /user 和 /user?_method=put 方式调用对应的路由处理器。
一个web应用程序可能有很多路由,我们可以通过这种切分的方式来模块化路由,便于管理。
页面渲染
页面渲染也可以叫动态页面渲染,随便你叫什么。我们知道动态模版引擎有很多,最终都是要生成一个html页面,无论哪个引擎再高深,原理只有一个:“ 模版引擎的作用就是,通过把数据注入到模版中,转换一个html页面,一个模版通过给定数据的不同,生成的html页面也不相同,所以叫做动态页面。 ”
我们知道response响应对象,它有很多方法可以用于响应。
res.send(“hello”); // 浏览器会看到hello
res.render(“index.html”,{title:”world”}); // 会渲染一个页面
res.download(“/my.pdf”); // 浏览器会下载一个文件。
还有很多方法,这里的 res.render 方法是渲染一个页面,但响应方法不只是渲染页面,可以下载,还可以只是一个字符串等等。之后的章节会详细介绍这些知识。