1、 路由器的配置分为两个,一个是需要做页面的渲染,一个是需要直接进行对数据进行输出,对于路由器的配置需要对路由器在公共的app.js进行注册与注入才能生效,否则是不能生效的。配置时根据不同的应用场景进行配置

 //数据注入点的app.js
//定义路由地址
let indexRouter = require('./routes/vip-course');
//注入路由进行使用
app.use('/vip-course', indexRouter); /*
路由配置页面(对于'/'的配置,设置默认页)
类似于:http://localhost:3000/vip-course
*/
router.get('/',(req,res,next)=>{
/*
send()方法与render() 不能同时存在,如果同时存在则会按照前后顺序进行对应的覆盖
*/
//默认的页面直接展示
res.send("1111"); /*
页面的渲染,ctx为一个对象参数,ctx={};
{
title:"标题",//
json:[],//json数组
jdata={}//对象
...
}
"index"代表是设置的默认页面
*/
res.render("index",ctx);
})

2、路由的传参

在路由进行配置需要进行页面的渲染时,需要用到的传参主要有三种:

 1 //路由进行Url的传参 http://localhost:3000/vip-course/add?a=b
2 router.get('/:course', (req, res, next)=> {
3 //获取到访问链接地址中的 add 参数
4 let add=req.params.course;
5 //获取到的是跟在链接地址后面的参数a的值,根据传入不同的名称进行不同的取数即可
6 let a=req.query.a
7 res.render('vip-course/' + req.params.course);
8 });
9
10 //路由进行post请求进行传参时,直接通过body进行传参,一般用于submit的表单提交,或ajax的数据提交
11 router.post('/:course', (req, res, next)=> {
12 let data=req.body;//获取提交的body参数数据
13 res.render('vip-course/' + req.params.course);
14 });

3、错误处理

为了避免一些黄页的出现,或者直接将一些错误抛出来造成了我们代码的安全性不高,所以我们可以进行一些错误的自定义化处理

 /*
在访问页面时,发现该页面不存在,或者是地址输入错误时
http://localhost:3000/data
*/
router.get('/:datas', function(req, res, next) {
//接收到的参数是否为index
if (req.params.datas=="index"){
res.render('index');
}else{
//输入的页面不是index时,或者不存在的一个页面时,需要直接进行自定义错误的抛出
next(new Error("找不到页面了"));
}
}); /*
自定义错误信息
*/
//引入一个http-errors的包
var createError = require('http-errors');
router.get('/:datas', function(req, res, next) {
if (req.params.datas=="index"){
res.render('index');
}else{
//创建一个错误代码为404,错误信息为 找不到页面了 的错误对象,供页面去显示
next(createError(404, '找不到页面了'));//状态码404
}
});

在发现一些错误无法进行满足时,或者对于一些根本无需去理会的错误,应该让他自己去适应和查找对应的界面时,或者我们对于所有的错误都统一去一个错误界面时,我们需要进行页面的重定向

router.get('/:datas', function(req, res, next) {
if (req.params.datas=="index"){
res.render('index');
}else{
//直接进行页面的重定向跳转
res.redirect('Error')
}
});

Express路由的更多相关文章

  1. express路由和中间件

    路由 简单来说,express路由就是用来处理一些请求,响应一些url地址. var express = require('express'); var app = express(); app.ge ...

  2. express路由探析(续)

    上一篇分析了express的路由机制,这次主要补充一些没有说到的东西. 之前说到,Router是中间件容器,Route是路由中间件,他们各自维护一个stack数组,里面存放layer,layer是封装 ...

  3. Node.js Express 路由文件分类

    前言 基于上一篇Web Api Controller分类,在MVC中我们通常要按自己的业务来划分Controller层, 好处多多,那么Express框架作为Node.js的一款MVC框架,那么自然也 ...

  4. nodejs开发 express路由与中间件

    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资 ...

  5. Express 路由

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [ ...

  6. (三)、Express 路由、静态文件、

    一.路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问. 每一个路由都可以有一个或者多个 ...

  7. Node.js express路由简单分析

    这2天看了一点node+express的路由源码有了一点眉目,总结一下 对于app.get, 首先给出一张类图: 图1 注意每个路由有一个stack,这个stack中存放了Layer. 路由系统内有三 ...

  8. node环境下express路由,

    1.基本路由概念 路由是指确定应用程序如何响应对特定端点的客户端请求,该请求是URI(或路径)和特定HTTP请求方法(GET,POST等). 每个路由都可以有一个或多个处理函数,这些函数在路由匹配时执 ...

  9. angular2路由与express路由冲突的问题

    angular2的路由定义了一个/a,如果走angular的路由没问题,如果直接访问/a就会出现cannot GET /a的错误,原因就是express的路由问题. 所以路由走angular2,那ex ...

  10. [转]express 路由控制--next

    next() express的路由控制有个next()功能,在定义了多个路由的时候,对匹配的url会按顺序执行, 例如,有这样两个路由,第一个路由会对满足“/”的地址,在req中添加一个user的属性 ...

随机推荐

  1. 忽略SIGPIPE信号

    #include <stdlib.h> #include <sys/signal.h> void SetupSignal() { struct sigaction sa; // ...

  2. js实现软键盘

    <p><img id="img" onclick="javascript:var s=document.createElement('script'); ...

  3. UML作业第三次:分析《书店图书销售管理系统》

    分析图书销售管理系统 一.概览 PlantUML类图语法学习小结 <书店图书销售管理>的类图元素 绘制类图脚本程序 绘制的类图 二.PlantUML类图语法 1.类之间的关系绘制 示例: ...

  4. 百度编辑器UEditor 点击上传图片选择框会延迟几秒才会显示 反应很慢(转)

    转自:http://www.blogxuan.com/php/show/323.html UEditor 编辑器点击上传文件选择框会延迟几秒才会显示,反应很慢,上传图片选择框显示很慢. 1.uedit ...

  5. Virtualization

    time sharing——>virtualization. OS需要low-level machinery mechanisms and high-level intelligence. 前者 ...

  6. JAVA for(i = 0; i<a.length; i++) 解析

    下列 System.out.printf 语句输出的结果是什么? Char a[]={„a‟,‟b‟,‟c‟,‟d‟,‟e‟}; For(i=0; i<=a.length/2; i++) { c ...

  7. Linux第七节课学习笔记

    RHEL7用户身份有以下这些: 1.管理员 root UID:0 权限最大: 2.系统用户 UID:1-999: 3.普通用户 UID:1000+. 一个用户基本组只有一个,扩展组可多个,创建扩展组用 ...

  8. ionic上拉加载组件 ion-infinite-scroll自动调用多次的问题

    参考文章地址:http://www.cnblogs.com/luleixia/p/6402418.html ionic 一个上拉刷新的组件 ion-infinite-scroll,如果页面未填充满页面 ...

  9. Ubuntu中,wxpython的TextCtrl引发的error:_pixman_log_error

    1>在windows下,执行下面的代码,不会报错,但是在Ubuntu下,就会报错 2>在Ubuntu下执行上面的代码,会提示下面的错. 解决方法: 若是TextCtrl中不写wx.TE_M ...

  10. FirewallD 快速使用文档

    FirewallD简介 FirewallD是CentOS7系列上代替iptables管理netfilter的配置工具,提供图形化和命令行,使用python开发(新版中计划使用c++重写),提供图形化和 ...