极乐门资源网 Design By www.ioogu.com

希望大家能够坚持看下去我这系列的文章,这也是对我的最大的鼓励与支持,让我们共同进步,以文会友,相互帮助。好了直接进入今天的主题,

什么是“Connect”,中间件又当如何理解,带着问题来看今天的文章。

NodeJS学习笔记之Connect中间件模块(一)

如何理解 "中间件" "" src="/UploadFiles/2021-04-02/2015012715323539.png">

下面列举出几个主要的中间件,并且实例讲述:

(1),cookieParser------cookie解析中间件,解析Cookies的头通过req.cookies得到cookies。还可以通过req.secret加密cookies。

复制代码 代码如下:
var connect = require('./lib/connect') ;
var app = connect()
.use(connect.cookieParser('secret string'))
.use(function (req,res,next){
    req.cookies.website="hi,i am bigbear !" ;
    res.end(JSON.stringify(req.cookies)) ;
}).listen(8888) ;

(2),session

  描述:会话管理中间件

  依赖:cookieParser

  参数:options

  options:

    key:Cookies名,默认值为connect.sid

    store: session存储实例

    secret: session的cookie加密

    cookie: session的cookie配置,默认值为{path: ‘/', httpOnly: true, maxAge: null}

    proxy:安全cookie的反向代理,通过x-forwarded-proto实现

    Cookie option:

    cookie.maxAge: 默认值null,表示当浏览器关闭后cookie被删除。

复制代码 代码如下:
 var connect = require('./lib/connect');
 var app = connect()
 .use(connect.logger('dev'))
 .use(connect.cookieParser())
 .use(connect.session({secret: '123', cookie: { maxAge: 60000 }}))
 .use(function (req, res, next) {
     if(req.session.pv){
         res.setHeader('Content-Type', 'text/html');
         res.write('views: ' + req.session.pv);
         res.end();
         req.session.pv++;
     }else{
         req.session.pv = 1;
         res.end('Refresh');
     }
 })
 .listen(8888);

  随着客户端不断刷新页面 "PV" 会不断增加,服务器端 “Session” 维护数量 。

(3),bodyParser------请求内容解析中间件,支持多种类型application/json,application/x-www-form-urlencoded, multipart/form-data。  

复制代码 代码如下:
 var connect = require('connect');
 var app = connect()
     .use(connect.bodyParser())
     .use(function(req, res) {
         res.end('req.body=>' + JSON.stringify(req.body));
     })
 .listen(8888);

 三,再来个对比实例,看看使用中间件的好处。

复制代码 代码如下:
 /*
  * 使用connect实现的静态文件处理
  */
 var connect = require('connect');
 connect(connect.static(__dirname + '/public')).listen(//监听
     8888,
     function() {
         console.log('Connect started on port 8888');
     }
 );
 /*
  * 使用node原生api实现
  */
 var http = require('http');
 http.createServer(
     function(req, res) {
         var url = require('url');
         var fs = require('fs');
         var pathname = __dirname + '/public' + url.parse(req.url).pathname;
         //读取本地文件
         fs.readFile(
             pathname,
             function(err, data) {
                 //异常处理
                 if (err) {
                     res.writeHead(500);
                     res.end('500');
                 }
                 else {
                     res.end(data);
                 }
             }
         );
     }
 ).listen(//监听
     8888,
     function() {
         console.log('Http Server started on port 8888');
     }
 );

尽管node原生api已经花费这么些行代码,但其实仍然留下一个简单静态文件服务器的诸多方面未经处理,

比如:404等异常未处理、没有基本的文件路径安全验证(实际上我们可以访问到整个os文件系统)、全局异常处理等等;

与此同时connect已经将这些问题都处理好了。

四,总结一下

 (1),理解中间件流式处理。

复制代码 代码如下:
 var app = connect();
 app.use(connect.staticCache());
 app.use(connect.static(__dirname + '/public'));
 app.use(connect.cookieParser());
 app.use(connect.session());
 app.use(connect.query());
 app.use(connect.bodyParser());
 app.use(connect.csrf());
 app.use(function (req, res, next) {
   // 中间件
 });
 app.listen(8888);

NodeJS学习笔记之Connect中间件模块(一)

(2),原生实现方式与中间件实现之间的差异化。

(3),通过上述的几个中间件例子,理解用途和使用场景并且参考相关文档掌握其余中间件的基本使用。

标签:
NodeJS,学习笔记,Connect,中间件

极乐门资源网 Design By www.ioogu.com
极乐门资源网 免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com

评论“NodeJS学习笔记之Connect中间件模块(一)”

暂无NodeJS学习笔记之Connect中间件模块(一)的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。