Javascript 节点应用程序架构:express从何处进入Node.js

Javascript 节点应用程序架构:express从何处进入Node.js,javascript,node.js,web,express,Javascript,Node.js,Web,Express,我试图教自己如何使用nodejs并用它构建一个webApp。在我遇到的大多数例子中,它都被用作webFrameWork。我试着去读它,但我大部分都能找到例子。我想了解使用nodejs时expressJs的确切用途 我了解了如何使用'pure'节点js()创建helloworld web服务器 我还了解了如何使用expressJs实现这一点: express仅仅是一种能够避免http样板代码的包装器吗?如果是,我应该在多大程度上使用express,在多大程度上使用nodes API?它只是用来做

我试图教自己如何使用nodejs并用它构建一个webApp。在我遇到的大多数例子中,它都被用作webFrameWork。我试着去读它,但我大部分都能找到例子。我想了解使用nodejs时expressJs的确切用途

我了解了如何使用'pure'节点js()创建helloworld web服务器

我还了解了如何使用expressJs实现这一点:

express仅仅是一种能够避免http样板代码的包装器吗?如果是,我应该在多大程度上使用express,在多大程度上使用nodes API?它只是用来做路由吗?或者还有什么

在本文中,我看到处理数据库没有任何帮助,并且没有使用expressJs创建任何模型。那么,当使用node和express构建应用程序时,我应该如何处理数据(用户、帖子等)

我试着做了大量的阅读,但我没有一个清晰的大局图,一个抽象层在哪一点结束,下一个抽象层在哪一点开始。我的意思是,我知道expressJs是一个webFrameWork,它位于运行V8引擎的节点Web服务器上,但是我对最终的应用程序代码应该是什么架构有点困惑:我是否在单个app.js中混合了nodeJs代码和expressJs代码?或者我应该有需要express的特定文件,而数据库中的另一个文件不需要express

现在你明白我的意思了: express从何处进入node.js?它为我做了什么,而我没有从“纯”节点得到什么,我不应该期望从它那里得到什么?


也许我的困惑是因为整个东西都是javascript,而你没有这些明显的“语言障碍”,这让事情变得更加明显(例如,我正在考虑LAMP堆栈)。或者这正是我对javascript的一般思考方式?就像您实际得到的唯一东西是javascript解释器,其他所有东西都是我们可以包含的lib,而expressJs只是将nodeJs作为依赖项?我真的很抱歉这么模糊。我只是想弄清楚我的心智模型。

节点本身基本上允许您在服务器上编写Javascript,而不是其他很多东西。它有一些基本的HTTP功能,但我不想单独使用这些功能来制作web应用程序。Express类似于节点生态系统的Rails(具有更少的魔力)。它处理路由、cookie和大多数其他与web相关的内容


您可能想查看中间件的事实上的标准库。至于数据建模,节点世界中的大多数人都使用mongodb。在实践中,您最终将在有意义的地方使用节点内置函数,并在需要其他功能的地方插入小型库。如果您还有其他问题,我很乐意提供帮助。

本质上,Node只是一个JavaScript解释器,由一组帮助程序库和一个命令行界面工具打包而成。节点打包了一组实用程序库,用于执行常见的开发任务,如与文件系统交互或发送HTTP请求Connect是节点顶部的一个抽象,提供了一个中间件层ExpressConnect节点之上的一种抽象,它使构建某些类型的应用程序变得更容易,主要是使用http、WebSocket、复杂路由、会话和cookie管理、身份验证等的web应用程序


有一些竞争对手与Express处于“相同的抽象级别”——其中比较流行的是Hapi(与Express非常相似),如果您想在节点顶部寻找类似Rails的框架,那么可以看看SailsJS、机车或Meteor

Express可以加快您的开发工作,并帮助您更好地构建代码布局。 如果您是node.js新手,那么您可以用最少的工作量立即构建一个express服务器。它也很容易扩展。 通常,人们会将一些其他流行的节点模块与express结合使用——connect、passport、ejs、body parser、connect redis、mongoose等,具体取决于您的使用场景以及与它们的集成程度 其他服务器。

作为类比:

express
将作为

  • asp.net是到.net的
  • j2ee是java的基础
Express只是服务器端的中间件框架,由服务器端的v8javascript引擎执行javascript实现。

Express只是一种包装器,能够避免http样板代码?

如果是,我应该在多大程度上使用express,在多大程度上使用nodes API?

所有请求和响应处理均应通过Express完成。此外,还可以了解Express Router在应用程序中提供大量URL时是如何简化工作的

它只是用于路由吗?或者还有什么?

是的,差不多就是这样。但这就是重点。做一件事,但要做好

那么,在构建带有节点的应用程序时,我应该如何处理数据(用户、帖子等等)

看看

我对最终应用程序代码的架构有点困惑

您(和我一样)似乎来自一个J2EE/Spring或Dot NET世界,在这个世界中,各种框架试图解决2层或3层体系结构视图-模型-dao的完整问题

在这里,风景没有什么不同。这些框架的设计原则是只做一件事,而且做得很好。因此,整体解决方案变得更加难以达成

所以现在有了

  • 多个独立的框架(节点包)可用于解决相同的问题空间和
  • 所有这些部件都必须使用w