Express路由
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路由的更多相关文章
- express路由和中间件
路由 简单来说,express路由就是用来处理一些请求,响应一些url地址. var express = require('express'); var app = express(); app.ge ...
- express路由探析(续)
上一篇分析了express的路由机制,这次主要补充一些没有说到的东西. 之前说到,Router是中间件容器,Route是路由中间件,他们各自维护一个stack数组,里面存放layer,layer是封装 ...
- Node.js Express 路由文件分类
前言 基于上一篇Web Api Controller分类,在MVC中我们通常要按自己的业务来划分Controller层, 好处多多,那么Express框架作为Node.js的一款MVC框架,那么自然也 ...
- nodejs开发 express路由与中间件
路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资 ...
- Express 路由
路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [ ...
- (三)、Express 路由、静态文件、
一.路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问. 每一个路由都可以有一个或者多个 ...
- Node.js express路由简单分析
这2天看了一点node+express的路由源码有了一点眉目,总结一下 对于app.get, 首先给出一张类图: 图1 注意每个路由有一个stack,这个stack中存放了Layer. 路由系统内有三 ...
- node环境下express路由,
1.基本路由概念 路由是指确定应用程序如何响应对特定端点的客户端请求,该请求是URI(或路径)和特定HTTP请求方法(GET,POST等). 每个路由都可以有一个或多个处理函数,这些函数在路由匹配时执 ...
- angular2路由与express路由冲突的问题
angular2的路由定义了一个/a,如果走angular的路由没问题,如果直接访问/a就会出现cannot GET /a的错误,原因就是express的路由问题. 所以路由走angular2,那ex ...
- [转]express 路由控制--next
next() express的路由控制有个next()功能,在定义了多个路由的时候,对匹配的url会按顺序执行, 例如,有这样两个路由,第一个路由会对满足“/”的地址,在req中添加一个user的属性 ...
随机推荐
- PHP错误日志和内存查看(转)
本篇文章给大家带来的内容是关于PHP错误日志和内存查看的方法介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.通过命令查看服务器上一共开了多少的 php-cgi 进程: ...
- Vue.js devtool插件安装后无法使用的解决办法【最简单有效的解决方法】
在开发vue相关的项目时,使用vue devtools工具是一件极其有趣的事,你所有的操作都马上给你实时反馈. 然而有时候安装好的工具,在chrome中不显示. 在网上找过多次,一直没有找到有效解决方 ...
- element 时间选择器——年
<el-date-picker v-model="fileYear" type="year" placeholder="选择年"> ...
- vue 监听手机键盘是否弹出及input是否聚焦成功
//定义移动端类型 function pageStats() { let u = navigator.userAgent, app = navigator.appVersion; let obj = ...
- 8th week blog
1.indexof() indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始,没有返回-1:方便判断和截取字符串!indexOf()定义 ...
- CentOS 7 下安装 Nginx
安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 一. gcc 安装安装 nginx 需要先 ...
- js中的call与apply随笔
关于javascript中的call方法.总结网上的观点: 1: 继承. 2: 修改函数运行时的this指针. 可能说起来还是比较抽象,下面具体例子说一下: x.call(y) (1)y.m = x ...
- docker hub切换国内镜像
官方docker hub访问非常的慢,安装之后最好先切换国内镜像: 执行: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh ...
- 前端小白第一次使用redux存取数据练习
在学习了redux基本教程后,课程参考如下网址:https://www.redux.org.cn/docs/introduction/CoreConcepts.html,开始着手练习 1.首先编写一个 ...
- XSS学习(二)
尝试操作Cookie 创建一个cookie,需要提供cookie的名字,值,过期时间和相关路径等 <?php setcookie('user_id',123); ?> 它的作用是创建一个c ...