Node填坑教程——过滤器

所谓“过滤器”,只是一个概念,可以理解是一个路由,也可以理解为一个中间件。原理非常简单,就是利用匹配规则,让其有限匹配在正常的路由前面处理就行了。

比如有如下路由

1 app.get(‘/‘, function (req, res, next) {
2     res.send(‘index‘);
3 });

访问根目录就能看到index。在前面加上一个路由,封锁全部请求

1 app.use(function (req, res, next) {
2     return res.send(‘filter‘);
3 });
4
5 app.get(‘/‘, function (req, res, next) {
6     res.send(‘index‘);
7 });

现在不管访问什么都只能得到 filter。然后我们放过根目录的请求。

1 app.use(function (req, res, next) {
2     if (req.path === ‘/‘) return next();
3     return res.send(‘filter‘);
4 });
5
6 app.get(‘/‘, function (req, res, next) {
7     res.send(‘index‘);
8 });

现在根目录能正常访问了。其他的路径仍然会显示 filter。当然根据具体逻辑能实现各种规则匹配策略。

过滤器相当于前置工作,那么与之相对的也有后置工作。通常用来处理404和错误页面。

 1 app.use(function (req, res, next) {
 2     if (req.path === ‘/‘) return next();
 3     return next();
 4 });
 5
 6 app.get(‘/‘, function (req, res, next) {
 7     res.send(‘index‘);
 8 });
 9
10 app.use(function (req, res, next) {
11    res.send(‘404‘);
12 });

前置路由全部放行,根路径会匹配到get的路由,其他路径只能匹配到最后一个路由,也就是404的路由了。

那怎么显示异常页面呢,路由的回调里还有个参数,4个参数的函数会用来处理错误。

 1 app.use(function (req, res, next) {
 2     if (req.path === ‘/‘) return next();
 3     return next(new Error());
 4 });
 5
 6 app.get(‘/‘, function (req, res, next) {
 7     res.send(‘index‘);
 8 });
 9
10 app.use(function (req, res, next) {
11    res.send(‘404‘);
12 });
13
14 app.use(function (err, req, res, next) {
15     res.send(‘err‘);
16 });

next带上一个参数就会匹配到4个参数的路由,也就是错误处理路由了。这样非根目录的请求直接跳转到错误页面。

时间: 2024-10-29 19:05:40

Node填坑教程——过滤器的相关文章

Node填坑教程——前言

Node是什么? Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码. 以上是比较官方的解释.简单来说,就相当于一个开发平台,不过这个平台及其简陋,官方没有ide(其实也不太需要),它不像php需要容器来运行,所有的开发.调试.管理.发布等工具都是民间的自己动手的产物,所以也诠释了为什么它的目标是帮助程序员构建高度可伸缩的应用程序. 进来发现Node有

Node填坑教程——HelloWorld

环境安装(极简): Node需要的环境可以说及其简单,也可以说及其复杂.为什么这么说呢? 如果里只需要运行环境那么到Node官网下载一个包就行了.里面自带npm管理工具,这是包管理工具,以后会频繁的使用它的功能.这时候Node的基本环境已经齐备了,尽管没有ide,没有测试,没有代码管理,没有其他的编译环境(C.C++.Python等).安装步骤不管是windows还是mac都是下一步的事,这里就不多说了. 那么,我们先从这样一个状态下进入Hello World. 打开终端,windows下开始-

Node填坑教程——整理文件

如果你能把所有代码写进一个文件,并且能很好的管理.协调.多人开发.那么可以跳过这期(请务必带我飞). 我们接着完善上期的代码,给代码分家. node并没有启动入口,更没有固定的项目结构,文件配置.这些全部要靠自己动手,靠约定,正所谓约定由于配置.因为作者书读的少,只会MVC结构,姑且按照MVC结构来分. 建立如下目录. /bin/ : 项目的启动文件,也可以放其他乱七八糟的脚本.如果你有多种环境或者多个入口,这样分就很有必要的 /configure/ : 配置文件,上图中根据生产环境和开发环境配

Node填坑教程——常用库

作为函数式编程来说,流程控制和函数库是必不可少的(应该吧). 下面我们介绍两个常用的库. lodash:完整的api请参阅,https://lodash.com/docs.这里我们只演示几个简单的例子. 安装 E:\project\heron-lesson\demo4>npm install lodash --save 1 var data1 = [1, 2, 3, 4, 5]; 2 var data2 = [ 3 {'user': 'barney', 'age': 36, 'active':

在CENTOS7下安装kubernetes填坑教程(原创)

kubernetes(以下简称"k8s")目前是公认的最先进的容器集群管理工具,在1.0版本发布后,k8s的发展速度更加迅猛,并且得到了容器生态圈厂商的全力支持,这包括coreos.rancher等,诸多提供公有云服务的厂商在提供容器服务时也都基于k8s做二次开发来提供基础设施层的支撑,比如华为.可以说k8s也是Docker进军容器集群管理和服务编排领域最为强劲的竞争对手. 现在的Red Hat centos7的用户,已经可以使用熟悉的yum来直接安装k8s,但是真要安装起来,还是有相

初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞

[微信测试公众号] 半年前耍着玩搭起来的“微信简历”,是LAMP版的,很皮毛. 微信的官方文档在这 http://mp.weixin.qq.com/wiki/index.php 1.获取access token 2.自定义菜单创建,直接在调试工具上做了 http://mp.weixin.qq.com/debug 3.接入指南(接入自己的网站) 4.接收微信消息,判断消息类型,判断消息关键字(比如来自哪个按钮),响应消息 这里有个小坑,不同类型的消息数据结构略有不同,判空最好做细致点. [V2.0

Node学习笔记(四):gulp+express+io.socket部署angularJs2(填坑篇)

这篇就先暂停下上篇博客--你画我猜的进度,因为在做这个游戏的时候,想采用最新的ng2技术,奈何坑是一片又一片,这边就先介绍下环境部署和填坑史 既然要用ng2,首先要拿到资源,我这边用的是angularJs2 beta版的,网上的资源有两种,一个是文件全压缩版的.min.js版的另一个就是一大堆乱七八糟的js文件,主要是ng2已经完全采用TypeScript,加之对es6的支持,所以需要引入一大堆兼容,编译文件 这边刚好特别手欠想学学gulp,于是开搞配置gulp环境,压缩所有的js文件成一个mi

Vue2.0 新手完全填坑攻略——从环境搭建到发布

本文作者 Jinkey(微信公众号 jinkey-love,官网 https://jinkey.ai) 原文链接 https://jinkey.ai/post/tech/vue2.0-xin-shou-wan-quan-tian-keng-gong-lue-cong-huan-jing-da-jian-dao-fa-bu 文章允许非篡改署名转载,删除或修改本段版权信息转载的,视为侵犯知识产权,我们保留追求您法律责任的权利,特此声明! 感谢 showonne.yubang 技术指导 Demo 地址

ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐

环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 开发相关: ruby 2.2.0 rails 4.2.0 sublime text 3 本文说明:所有的命令均在$ 之后,若$前边带有信息,只是为了方便你理解和与自己对照. 安装过程中由于这样那样的原因,产生许多坑,所谓坑是对初学者来说,大牛们飘过吧. 步骤1.从官网下载ubuntu 14.04 X64 http://124.205.69.136/files/2013000000502943/202.141.176.11