1、 路由器的配置分为两个,一个是需要做页面的渲染,一个是需要直接进行对数据进行输出,对于路由器的配置需要对路由器在公共的app.js进行注册与注入才能生效,否则是不能生效的。配置时根据不同的应用场景进行配置
1 //数据注入点的app.js 2 //定义路由地址 3 let indexRouter = require('./routes/vip-course'); 4 //注入路由进行使用 5 app.use('/vip-course', indexRouter); 6 7 /* 8 路由配置页面(对于'/'的配置,设置默认页) 9 类似于:http://localhost:3000/vip-course 10 */ 11 router.get('/',(req,res,next)=>{ 12 /* 13 send()方法与render() 不能同时存在,如果同时存在则会按照前后顺序进行对应的覆盖 14 */ 15 //默认的页面直接展示 16 res.send("1111"); 17 18 /* 19 页面的渲染,ctx为一个对象参数,ctx={}; 20 { 21 title:"标题",// 22 json:[],//json数组 23 jdata={}//对象 24 ... 25 } 26 "index"代表是设置的默认页面 27 */ 28 res.render("index",ctx); 29 })
2、路由的传参
1 1 //路由进行Url的传参 http://localhost:3000/vip-course/add?a=b 2 2 router.get('/:course', (req, res, next)=> { 3 3 //获取到访问链接地址中的 add 参数 4 4 let add=req.params.course; 5 5 //获取到的是跟在链接地址后面的参数a的值,根据传入不同的名称进行不同的取数即可 6 6 let a=req.query.a 7 7 res.render('vip-course/' + req.params.course); 8 8 }); 9 9 10 10 //路由进行post请求进行传参时,直接通过body进行传参,一般用于submit的表单提交,或ajax的数据提交 11 11 router.post('/:course', (req, res, next)=> { 12 12 let data=req.body;//获取提交的body参数数据 13 13 res.render('vip-course/' + req.params.course); 14 14 });
3、错误处理
为了避免一些黄页的出现,或者直接将一些错误抛出来造成了我们代码的安全性不高,所以我们可以进行一些错误的自定义化处理
1 /* 2 在访问页面时,发现该页面不存在,或者是地址输入错误时 3 http://localhost:3000/data 4 */ 5 router.get('/:datas', function(req, res, next) { 6 //接收到的参数是否为index 7 if (req.params.datas=="index"){ 8 res.render('index'); 9 }else{ 10 //输入的页面不是index时,或者不存在的一个页面时,需要直接进行自定义错误的抛出 11 next(new Error("找不到页面了")); 12 } 13 }); 14 15 /* 16 自定义错误信息 17 */ 18 //引入一个http-errors的包 19 var createError = require('http-errors'); 20 router.get('/:datas', function(req, res, next) { 21 if (req.params.datas=="index"){ 22 res.render('index'); 23 }else{ 24 //创建一个错误代码为404,错误信息为 找不到页面了 的错误对象,供页面去显示 25 next(createError(404, '找不到页面了'));//状态码404 26 } 27 });
在发现一些错误无法进行满足时,或者对于一些根本无需去理会的错误,应该让他自己去适应和查找对应的界面时,或者我们对于所有的错误都统一去一个错误界面时,我们需要进行页面的重定向
router.get('/:datas', function(req, res, next) { if (req.params.datas=="index"){ res.render('index'); }else{ //直接进行页面的重定向跳转 res.redirect('Error') } });