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. Dapp混合模型开发--Dice2win的解读

    前言: 之前讲到Dapp原生态对随机函数的支持并不友好, 现在讲讲一种解决思路. 既能保证随机函数的不可预测性, 又能保证公平性, 平台和玩家都能满意. 而Dapp中的Dice2Win实现, 刚好是其 ...

  2. JavaScript原型链及继承

    在JavaScript中,所有的东西都是对象,但是JavaScript中的面向对象并不是面向类,而是面向原型的,这是与C++.Java等面向对象语言的区别,比较容易混淆,因此把我自己学习的过程记录下来 ...

  3. [LeetCode&Python] Problem 101. Symmetric Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  4. ewfwefwefe

    qwdefwef fwefwef

  5. 支持pc和移动端的手写签批功能

    由于之前的业务需要,要求在pc端(用鼠标写字).移动端(手写)实现会签功能,然后百度下载了个签字插件,经过一些修改和功能添加,实现了现有的功能插件,效果如图: 代码下载地址:https://githu ...

  6. input元素的required属性引发的血案

    罪魁祸首===> 1,input 有一个tel类型,为移动端设置的 2,input的radio类型是根据name区分的,与id.class无关 3,<!DOCTYPE html>:文 ...

  7. Scala基础

    1.seq[String] 用[]表示参数类型,java使用<>表示参数,因为Scala 允许以<命名方法和变量名,java不允许 2.支持range的类型:Char .Int . ...

  8. Go 包管理工具--glide

    网上有一篇解释glide比较好的文章:https://my.oschina.net/u/553243/blog/1475626 在命令行中输入glide $glide NAME: glide - Ve ...

  9. 详解Vue 非父子组件通信方法(非Vuex)

    假设 bb 组件里面有个按钮,点击按钮,把 123 传递给 aa 组件 // 根组件(this.$root) new Vue({ el: '#app', router, render: h => ...

  10. LEB128相关知识

    LEB128相关知识 介绍 LEB128(little endian base 128)是一种变长的整数压缩编码形式,它是出自于DWARF debug file format.在Android的Dal ...