什么是Express.js?


439

我是Node.js的学习者。

  1. 什么是Express.js
  2. Node.js的目的是什么?
  3. 为什么我们实际上需要Express.js?与我们一起使用Node.js有什么用?
  4. 什么是Redis?Express.js附带吗?

28
向下滚动到社区维基答案(有+50赏金)。我发现它比标记的答案更有帮助。
Shishir Gupta

Answers:


266

这过于简化了,但是Express.jsNode.js来说就像Ruby on RailsSinatraRuby一样

Express 3.x是一个轻量级的Web应用程序框架,可帮助您将Web应用程序组织到服务器端的MVC架构中。您可以为模板语言使用多种选择(例如EJSJadeDust.js)。

然后,您可以将MongoDB之类的数据库与Mongoose一起使用(用于建模)为Node.js应用程序提供后端。Express.js基本上可以帮助您管理从路由到处理请求和视图的所有内容。

Redis是一个键/值存储-通常用于Node.js应用程序中的会话和缓存。您可以使用它做更多的事情,但这就是我使用它的目的。我将MongoDB用于更复杂的关系,例如订单项<->订单<->用户关系。有些模块(最著名的是connect-redis)可以与Express.js一起使用。您将需要在服务器上安装Redis数据库。

这是Express 3.x指南的链接:https : //expressjs.com/en/3x/api.html


20
Express更像是sinatra,而不是rails。
Halfelf 2012年

11
Express受sinatra的特别启发。它最重要的功能可能是路由;它还使connect提供的所有中间件都可用(以至于除了需要connect中间件的最特殊的应用程序之外的所有应用程序都可能会使用express)。
ebohlman 2012年

我想说redis实际上是复杂关系的理想选择。
再加上

EJS链接当前已死。
David Spector '18

我真的不明白MVC与Express的关系。如果我没记错的话,Express没有模型,也没有视图。它是基于中间件的框架,而不是MVC框架。请解释一下。
Gherman

381

1)什么是Express.js?

Express.js是一个Node.js框架。到目前为止,它是最受欢迎的框架(在NPM上最受欢迎)。

在此处输入图片说明

它基于Connect中间件的配置和精细的简化而构建。有人将Express.js与Ruby Sinatra和笨重而固执的Ruby on Rails进行了比较

2)Node.js的目的是什么?

您不必一遍又一遍地重复相同的代码。Node.js是具有HTTP模块的低级I / O机制。如果你只是使用一个HTTP模块,很像解析有效载荷,饼干的工作,存储会话(在内存或Redis的),选择基础上,对路由模式正则表达式必须重新执行。使用Express.js,就可以使用它。

3)为什么我们实际上需要Express.js?与我们一起使用Node.js有什么用?

第一个答案应该回答您的问题。如果否,则尝试在普通的Node.js(即仅使用核心模块)中然后在Express.js中编写小型REST API服务器。后者将使您节省5-10倍的时间和代码行。

什么是Redis?Express.js附带吗?

Redis是一种快速的持久键值存储。您可以选择使用它来存储与Express.js的会话,但不必这样做。默认情况下,Express.js具有用于会话的内存存储。Redis也可以用于排队作业,例如电子邮件作业。

查看我的Express.js REST API服务器教程

MVC,但不是本身

Express.js本身不是一个模型视图控制器框架。您需要将自己的对象关系映射库(例如用于MongoDB的Mongoose,用于SQL数据库的Sequelize(http://sequelizejs.com),用于许多数据库的Waterline(https://github.com/balderdashy/waterline)引入数据库中。堆。

备择方案

要考虑的其他Node.js框架(https://www.quora.com/Node-js/Which-Node-js-framework-is-best-for-building-a-RESTful-API):

更新:我整理了此资源,以帮助人们选择Node.js框架:http : //nodeframework.com

UPDATE2:我们在nodeframework.com中添加了一些GitHub统计信息,因此您现在可以在一页上比较30多个框架的社交证明(GitHub星级)水平。

在此处输入图片说明

全栈:

只是REST API:

Ruby on Rails像:

Sinatra喜欢:

其他:

中间件:

静态网站生成器:


可以这么说吗-Express.js是Node.js模块(在第一行中已作为框架解决)。我module经常听到术语nodeJs 。框架内部的框架对我来说是个新闻。
RBT

是的,实际上,Express是一个节点软件包管理器(npm)模块(又称软件包),其数量与npm中的其他模块一样,已添加到应用程序中。(如果查看Node Express应用程序的源文件夹,则会看到一个名为node_modules的文件夹。它将包含一个名为express的子文件夹。)但是,它比npm上的其他大多数模块有用得多,因为它具有一个依赖模块的负载,这些模块有效地为应用编码人员提供了执行常见任务的API。框架内有框架吗?更像是可附加到服务器创建框架的实现框架。
干线

15
  1. 什么是Express.js?

Express.js是一个Node.js Web应用程序服务器框架,旨在用于构建单页,多页和混合Web应用程序。它是node.js的事实上的标准服务器框架。

基于Express构建的框架。

在Express上构建了几种流行的Node.js框架:

LoopBack:高度可扩展的开源Node.js框架,用于快速创建动态的端到端REST API。

Sails:用于Node.js的MVC框架,用于构建实用的,可用于生产的应用程序。

Kraken:安全且可扩展的层,通过提供结构和约定来扩展Express。

平均值:有意识的全栈JavaScript框架,可简化并加速Web应用程序的开发。

  1. Node.js的目的是什么?
  2. 为什么我们实际上需要Express.js?与我们一起使用Node.js有什么用?

Express增加了简单的路由选择,并支持Connect中间件,从而提供了许多扩展和有用的功能。

例如,

  • 想要会议吗?在那里
  • 是否需要POST正文/查询字符串解析?在那里
  • 是否想要通过玉器,小胡子,EJS等轻松模板化?在那里
  • 是否需要不会导致整个服务器崩溃的优美的错误处理?

10
  1. Express.js是Node.js的模块化Web框架
  2. 它用于更轻松地创建Web应用程序和服务
  3. Express.js简化了开发,并使编写安全,模块化和快速的应用程序变得更加容易。您可以在普通的旧Node.js中完成所有操作,但是某些错误可能会(并且会)浮出水面,包括安全问题(例如,未正确转义字符串)
  4. Redis是一个内存数据库系统,以其快速的性能而闻名。否,但是您可以使用Redis客户端将它与Express.js结合使用

我不能比这更简洁。对于您的所有其他需求和信息,Google是您的朋友。


3

ExpressJS是NodeJS 之上的 Web应用程序框架。

它可以用于快速构建WebApp,RESTFUL API等。

支持多种模板引擎,例如Jade,EJS。

ExpressJS仅保留极简功能作为核心功能,因此默认情况下不支持ORM或DB。但是,只要花一点力气,Expressjs应用程序就可以与不同的数据库集成。

有关创建ExpressJS应用的入门指南,请查看以下链接:

ExpressJS入门教程


3

Express是Node的模块框架,您可以将其用于基于服务器的应用程序,这些服务器将“侦听”来自客户端的任何输入/连接请求。当您在Node中使用它时,它只是说您正在从Node模块中请求使用内置Express文件。

Express是后端在NodeJS中的许多Web应用程序的“骨干”。据我所知,它的主要资产是路由系统的功能,该系统处理2个主机之间的“交互”服务。有很多其他选择,例如Sails。



0

由TJ Holowaychuk创建的Express.js,现在由社区管理。它是node.js中最受欢迎的框架之一。Express还可以用于开发各种产品,例如Web应用程序或RESTful API。有关更多信息,请在expressjs.com官方网站上阅读。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.