当前位置: 首页 > 面试题库 >

什么是Node.js的Connect,Express和“中间件”?

凌远
2023-03-14
问题内容

尽管非常了解JavaScript,但我对Node.js生态系统中的这三个项目的 确切 用途感到困惑。像Rails的架子吗?有人可以解释一下吗?


问题答案:

[ 更新: 从4.0版本开始,Express不再使用Connect。但是,Express仍与为Connect编写的中间件兼容。我的原始答案如下。

我很高兴您对此提出疑问,因为对于那些关注Node.js的人们来说,这无疑是一个常见的困惑点。这是我最好的解释:

  • Node.js本身提供了一个http模块,该模块的createServer方法返回一个对象,您可以使用该对象来响应HTTP请求。该对象继承了http.Server原型。

  • Connect还提供了一种createServer方法,该方法返回一个继承了扩展版本的对象http.Server。Connect的扩展主要用于简化中间件的插入。这就是为什么Connect将自己描述为“中间件框架”的原因,并且通常将其类似于Ruby的Rack。

  • Express确实做到了Connect对http模块所做的连接:它提供了createServer一种扩展Connect Server原型的方法。因此,这里提供了Connect的所有功能, 以及 视图渲染和用于描述路线的便捷DSL。Ruby的Sinatra是一个很好的类比。

  • 然后还有其他框架可以扩展Express!例如Zappa,它集成了对CoffeeScript,服务器端jQuery和测试的支持。

这是“中间件”含义的具体示例:开箱即用,以上都不为您提供静态文件。但是只需connect.static插入(Connect附带的中间件),该中间件被配置为指向目录,您的服务器即可提供对该目录中文件的访问。请注意,Express还提供了Connect的中间件。express.static与相同connect.static。(两者都被称为staticProvider直到最近。)

我的印象是,如今,大多数“真正的” Node.js应用程序都是使用Express开发的。它添加的功能非常有用,并且如果需要,所有较低级别的功能仍然存在。



 类似资料:
  • 问题内容: 我正在尝试从Java程序连接到在本地主机上运行的MS SQL Server 2005 Express数据库。 我已经尝试过在另一个运行MS SQL Server 2000的系统(相同的Jave代码)上使用的连接URL(如下)。但这是行不通的。 有任何想法吗? 问题答案: 您确定这是正确的实例吗?SQL Express倾向于作为命名实例(例如“ localhost \ SQLExpres

  • 问题内容: Node.js的用途是什么?我在某处看到了这个: 如果用于设置为侦听端口,我可以改用它吗? 如果不是,为什么? 问题答案: 在许多环境(例如Heroku)中,作为一种约定,您可以设置环境变量以告知Web服务器要监听的端口。 因此,意味着:环境变量PORT中的任何内容,如果没有,则为3000。 因此,您可以将,或传递给,从而使您的服务器能够从环境中接受要监听的端口上的参数。 如果将硬编码

  • 问题内容: 查看的框架的随机源文件,有两行我不理解的代码(这些代码行几乎是所有NodeJS文件的代表)。 和 我知道 第一段代码 允许文件中的其余功能公开给NodeJS应用程序使用 ,但我不清楚 它的工作原理 或该行代码的含义。 什么和实际上的意思吗? 我相信第二段代码允许访问文件中的函数,但同样,它是如何做到这一点的。 基本上,这些是什么神奇的话: 和 ? 问题答案: 更具体: 是文件内的全局范

  • 主要内容:运行时是什么?,Node.js 的诞生,Node.js 的组成,总结JavaScript 诞生于 1995 年,几乎是和互联网同时出现;Node.js 诞生于 2009 年,比 JavaScript 晚了 15 年左右。 在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程语言一样直接在计算机上使用,想干什么就干

  • 问题内容: 我没有完全了解Node.js的全部含义。也许是因为我主要是基于Web的业务应用程序开发人员。它是什么,有什么用? 到目前为止,我的理解是: 编程模型是事件驱动的,尤其是它处理I / O的方式。 它使用JavaScript,解析器为V8。 它可以轻松用于创建并发服务器应用程序。 我的理解正确吗?如果是,那么事件I / O的好处是什么,并发性东西还有更多好处吗?另外,Node.js的发展方

  • 问题内容: 我试图弄清楚什么是“签名cookie”。网上没有太多东西,如果我尝试这样做: 但仍然… Cookies在浏览器上仍然100%正常,而且我真的不知道这里的“签名”是什么(我有点希望在客户端上“看到”一些奇怪的东西,例如使用作为盐的“秘密”?) 该文档说(https://github.com/expressjs/cookie- parser ): 解析 Cookie 标头,并填充 以Coo