Node Connect 及其中间件的理念相当好

好到有种相见恨晚的感觉,呵呵。Connect 所谓的中间件思想,可谓不新鲜。但是于 Node 上面使用,却是第一个吃螃蟹的人,以致今日,有为数不少的第三方中间件。套一句俗话,充分利用好这些中间件,能让你的工作事半功倍,呵呵。

这种中间件思想,简直就是抓住了 Web Server 七尺之喉,把关 Request / Response,既清晰又灵活,好处十分明显。Connect 约定一种规范,把所有参与进来的中间件构成一个队列,中间件之间的执行遵循 Connect 约定的接口。这样的流程最后,必定是 Response.end() 的。也就是说最终输出有且只有一个。当然“最终输出”也不一定放在最后的,如日志到文件则可以放在 Response.end() 之后。我跟大家说的,就是一个流程的意思、一道工序的意思。所以,你把要使用的中间件放在队列的哪个位置,就有所考究了。在前面的可能因为某些条件限制了后面的执行。

var app = connect()
.use(connect.logger('dev'))
.use(function(req, res){
     res.end('dsds');
})
.use('/xxx', function(request, response){
     .../xxx 永远不会执行……
});

不过值得一提的是,Connect 的中间件队列与所谓的异步、同步执行无关。异步/同步取决于你逻辑的封装如何。有异步的,那 Connect 的中间件必然异步执行。当然,从轮廓上说,Connect 的链式调用像同步的方式。

我感兴趣的 Connect 或者说打算从 Connect 的功能: Session 和其他的相关第三方组件。其实这些功能组件凭自己写也不是难事,至少 ASP JScrpt 我写过相当部分~不过就是花时间啦。

跟 Connect 还有点渊源的就是这位仁兄出自 Sencha L.L.C 的,Ext JS 粉在此膜拜~

说到 Connect 就不得不提下面相关资源:《Connect模块解析(之一)》《Connect模块解析(之二)静态文件中间件》、《connect源码分析--基础架构》。

用法:

像 asp/php/jsp 这样的则属于动态网页,查询数据和调用 EJS 渲染模板,否则,将是调用静态服务器:

var siteRoot = 'C:/project/yueyun/root';
connect.static(siteRoot)(request, response, function(){});

P.S: Node-sqlite3 win下面终于带驱动包了,不用自己编译~适合我此等的小白。直接下:http://cl.ly/0w1B023C3w0Y NPM 新版可解决此难题

原来这种中间件的理念就是 Pipeline!详见:

浅谈管道模型(Pipeline)

浅谈简单工作流设计——责任链模式配合策略与命令模式的实现

时间: 2024-11-14 12:52:46

Node Connect 及其中间件的理念相当好的相关文章

node.js cookie-parser 中间件介绍_node.js

之前加入了一个学习笔记本群,通过学习笔记来分享学习成果.也在这里发一份吧. 当我们在写web的时候,难免会要使用到cookie,由于node.js有了express这个web框架,我们就可以方便地去建站.在使用express时,经常会使用到cookie-parser这个插件.今天我们来分析一下这个插件. 这个插件通常当作中间件使用,app.use(cookieParser()), 这样就可以处理每一个请求的cookie. 从名字上看,这就是一个解释Cookie的工具.通过req.cookies可

《Node.js入门经典》一导读

前言 Node.js入门经典 Node.js可以让开发人员在服务器上使用JavaScript,这让熟悉JavaScript的开发人员又多了一种服务器端的开发技能,但Node.js并非仅限于此.它重新思考了在现代Web环境下的网络编程,在这个环境下,应用程序可能需要从许多不同的地方读写数据,也可能有上百万个并发用户. 在具有传统的计算机科学学位的开发人员眼中,JavaScript就是一种玩具语言.但是,JavaScript已经经历了无数次的挑战,而且如今在Web的浏览器和服务器端(借助于Node.

Node.js与Sails ~项目结构与Mvc实现及日志机制_node.js

本文首先从sails的安装讲起接下来介绍node.js与Sails的日志机制,小伙伴们已经迫不及待要看下文了吧,好吧. Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新的功能组件,下面我们来看一下安装方法 一 安装Sails npm -g install sails 二 建立一个Sails的项目 sails new testProject 三 启动项目 c

Node.js的Koa框架上手及MySQL操作指南_node.js

由 Express 原班人马打造的 koa,致力于成为一个更小.更健壮.更富有表现力的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率.Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手. 安装koakoa 依赖支持 generator 的 Node 环境,也就是说,node的版本要在 0.11.9 或者更高,否则将无法执行. 用npm: $

学习NodeJS第一天:node.js引言

Node.JS 是资深 C 程序员 Ryan Dahl(http://four.livejournal.com/)的作品,依据 Google 著名的开源 JavaScript 引擎 V8 来进行二次开发的 Web I/O 服务器(http://nodejs.org/).V8 本身是非常快的 JavaScript 引擎,处理 JS 执行运行的速度非常高.相关测试表明,FireFox.Opera 和 IE 的 JS 引擎速度都不及 V8 来得快.而且,还可以说,只要浏览器之间的 JS 引擎大战一日不

链表笔试题

链表: 1.注意是否有带头结点. 2.单链表的建立:顺序建表(尾插法).逆序建表(头插法).单链表插入.删除操作需要寻找前驱结点. 3.双向链表和单向链表相比,多了一个前驱指针,单向链表在删除结点时候要遍历链表,双向链表在删除不需要遍历. 一.判断两个链表是否相交:(假设两个链表都没有环)  1.判断第一个链表的每个节点是否在第二个链表中  2.把第二个链表连接到第一个后面,判断得到的链表是否有环,有环则相交  3.如果两个链表有一个公共结点,那么该公共结点之后的所有结点都是重合的,那么,它们的

Perl6 的 YAML::Dumper 模块使用详解

既然木有 Star 包,那么安装好 MoarVM 上的 Rakudo 后我们就有必要先自己把 panda 之类的工具编译出来.这一步需要注意一下你的 @*INC 路径和实际的 $PERL6LIB 路径,已经编译之后的 panda 存在的 $PATH 是不是都正确,如果不对的修改一下 ~/.bashrc 就好了. 我的尝试迁移对象是一个很简单的 Puppet 的 ENC 脚本,只涉及 SQLite 的读取,以及 YAML 格式的输出.通过 panda install DBIish 命令即可安装好

英特尔发布全新物联网开发套件

英特尔信息技术峰会,深圳,2016年4月14日--英特尔全面发布英特尔?物联网服务融合开发套件,力求为广大创客群体提供更智能.更便捷.更易于操作的开发环境,帮助他们实现创新梦想.同时联手上海智位机器人有限公司(DFRobot).深圳矽递科技有限公司(Seeed Studio).深圳市创客工场科技有限公司(Makeblock)三家创客业界先锋,共同举行了物联网应用开发工具社区颁奖仪式,表彰了他们基于全新英特尔物联网套件开发的创新产品,鼓励业界更多的合作伙伴积极加入到这一开发社区中来. 图为英特尔与

使用websocket实现录音实例

参考文档:认识HTML5的WebSocket chrome 支持语言聊天 下面介绍一个chrome 的录音实例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 6