Express路由

      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')
  }
});
目前只是自己在初学Express时,所做的一些总结,希望对于一些也在跟我一样刚学习的童鞋会有用,谢谢!
原文地址:https://www.cnblogs.com/zixiwang/p/9942554.html