路由(二)

一 、多个路由映射相同的请求路径

如果路由中,有多个路由映射相同的请求路径,那路由会怎么执行?

可以为一个地址同时绑定多个路由,多个路由将会按照绑定的顺序依次执行,
		但是注意:前一个路由有权决定后一个路由是否执行

	在路由的回调函数中,处理req 和 res 还有一个第三个参数 next
		next是一个回调函数,如果在路由中调用next,则请求会自动跳转到下一个路由,若不调用不执行下一个路由

	每一次请求,都会创建一个新的request 和 response对象
		一个地址同时绑定多个路由,在一次请求中,这多个路由中的request和response都是同一个对象

例子如下: 

//引入express
var express = require("express");
//创建应用对象
var app = express();

//配置静态资源
app.use(express.static("public"));


app.get("/hello/abc" , function (req , res , next) {
	console.log("Hello 我是路由1");

	//console.log(next);

	res.send("路由1返回的内容");

	next();//只有调用next()方法,下一个路由才会执行


});

app.get("/hello/abc" , function (req , res , next) {
	console.log("Hello 我是路由2");
	res.send("路由2返回的内容");

	next();

});

app.get("/hello/abc" , function (req , res) {
	console.log("Hello 我是路由3");

});




//监听端口并启动服务器
app.listen(3000 , function () {
	console.log("ok");
});

绑定多个路由还有另一种方法,在一个路由中写多个回调函数:

//引入express
var express = require("express");
//创建应用对象
var app = express();

//配置静态资源
app.use(express.static("public"));



app.get("/hello" , function (req , res , next) {
	console.log("路由1");
	res.send("路由1");
	next();
}, function (req , res , next) {
	console.log("路由2");
	next();
}, function (req , res , next) {
	console.log("路由3");
});


//监听端口并启动服务器
app.listen(3000 , function () {
	console.log("ok");
});

二、模块化路由

如果用应用对象app.get();这种方式绑定路由,不是很好,如果有很多个路由,对于项目很难管理,那如何绑定,接下来聊一下;

我们可以新建一个模块helloRouter.js,然后调用express.Router()方法,express.Router()会返回一个router对象,该对象可以用来绑定路由。

例子如下:

var express = require("express");

var router = express.Router();

router.get("/hello",function (req , res) {
	res.send("我是hello路由");
});

router.get("/abc",function (req , res) {
	res.send("我是abc路由");
});
//暴露路由
module.exports = router;

然后在主文件中引入路由,将router设置为应用的中间件,路由就生效了。

//引入express
var express = require("express");
//创建应用对象
var app = express();

//配置静态资源
app.use(express.static("public"));

//引入hello路由
var helloRouter = require("./router/helloRouter");

//需要将router设置为应用的中间件
//可以再为路由加一个根路径/nihao,不加也可以
app.use("/nihao",helloRouter);


//监听端口并启动服务器
app.listen(3000 , function () {
	console.log("ok");
});

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值