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. vue-cli的使用(模板自定义、本地配置,eslint的配置)

    vue-cli(脚手架工具:帮助开发者完成基本的代码编写). 功能: 目录结构 本地调试 代码部署 热加载 单元测试 使用模板: vue init <template-name> < ...

  2. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

  3. 学习Mathematica

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2017/12/07 0.杂: Mathematica的自带函数的首字母一定是大写的,参数输入要用中括号[],而不是圆括 ...

  4. CSS学习笔记_day3

    一.浮动的清除 1.给祖先元素加高度 <style> * { padding: 0; margin: 0; } .box1 { height: 100px; /**/ } ul { /*去 ...

  5. 如何注册Tomcat到Window Service服务

    win+R打开运行窗口,输入cmd打开dos窗口,使用cd命令将位置切换到tomcat路径下的bin文件,本机是F盘下. 先输入F:回车进入F盘,然后输入命令cd F:\apache-tomcat-5 ...

  6. angular js 初学

    1 angularJS的一些概念 AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 是一个 JavaScript 框架,它是一个以Javascript编写的库,它可通过 ...

  7. myEclipse出现cannot paste the clipboard contents into the selected elements报错

    导入jar包报错,cannot paste the clipboard contents into the selected elements,查阅资料让重新打开工程,但依然报错. 最后在本地路径复制 ...

  8. Cisco Packet Tracer7.1 rip协议实验

    设备: 路由器:三个1941:router0,router1,router2; 终端用户:二个PC-PT:PC0,PC1; 网络配置: 网络 设备 接口 IP 设备 接口 IP 192.168.0.0 ...

  9. c++输出小数

    #include <stdio.h> printf("%.4lf",value); #include <iomanip> cout.setf(ios::sh ...

  10. linux子系统ubuntu16.04安装使用xrdp当远程桌面

    参考文献:https://icytown.com/windows/windows-subsystem-for-linux-gui-xubuntu/ https://jingyan.baidu.com/ ...