504

我是一名学习者节点.js.

  1. 什么快递.js?
  2. 使用Node.js的目的是什么?
  3. 为什么我们实际上需要Express.js?我们如何使用Node.js?
  4. 什么Redis(Redis)? 它是Express.js附带的吗?
0

10个答案10

重置为默认值
439
+50

1) 什么是Express.js?

快递.js是一个节点.js框架。这是目前最受欢迎的框架(NPM上最受欢迎的框架)。

在此处输入图像描述.

它围绕Connect中间件的配置和粒度简单性构建。有些人将Express.js与鲁比·辛纳特拉与笨重且固执己见的人相比Rails上的Ruby.

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

你不必反复重复相同的代码。Node.js是一个低级输入/输出具有HTTP模块的机制。如果您只使用HTTP模块,那么需要做很多工作,比如解析有效负载、cookie、存储会话(内存或内存中Redis(Redis)),根据正则表达式待重新实施。使用Express.js,它就在那里供您使用。

3) 为什么我们实际上需要Express.js?它对我们使用Node.js有何帮助?

第一个答案应该回答你的问题。如果没有,那么试着写一个小的休息普通Node.js中的API服务器(即,仅使用核心模块),然后是Express.js。后者将花费您5-10倍的时间和代码行。

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

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

结账我关于使用Express.js的REST API服务器的教程.

MVC,但不单独

Express.js是模型-视图控制框架本身。您需要带上自己的对象关系映射库,例如Mongoose for MongoDB、Sequelize(http://sequelizejs.com)对于SQL数据库,Waterline(https://github.com/balderdashy/swaterline)将许多数据库放入堆栈中。

选择

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

更新:我收集了这些资源,帮助人们选择Node.js框架:http://nodeframework.com

更新2:我们在nodeframework.com上添加了一些GitHub统计数据,现在您可以在一个页面上比较30+个框架的社交证明级别(GitHub-stars)。

在此处输入图像描述

完整堆栈:

仅REST API:

Ruby on Rails,如:

Sinatra风格:

其他:

中间件:

静态站点生成器:

4
  • 可以说-Express.js是一个Node.js模块(您在第一行中已经将其作为框架进行了处理)吗。我听说过nodeJ这个词模块经常发生。框架中的框架对我来说是个小新闻。
    – 彩铃
    评论 2017年5月22日0:43
  • 是的,实际上,Express是一个节点包管理器(npm)模块(也称为包),就像从npm添加到应用程序的其他模块一样。(如果你查看Node Express应用程序的源文件夹,你会看到一个名为Node_modules的文件夹。它将包含一个子文件夹,名为Express。)但它比npm以外的大多数其他模块要有用得多,因为它有大量的依赖模块,这些模块有效地为应用程序编码器提供了用于常见任务的API。框架内的框架?更像是可附加到服务器创建框架的实现框架。
    – 行李箱
    评论 2020年2月23日14:18
  • 我觉得你根本没有在解释它的作用,你应该简要地解释一下web是如何工作的,开发人员是如何工作以及它是如何演变的,这样任何人都可以清楚地看到为了改进东西所表达的内容 评论 2021年10月11日23:21
  • @RBT您是否通过短语“框架内的框架”将nodejs称为外部框架?此外,我一直认为express是一个库,而不是一个框架。 评论 2022年7月15日12:33
300

这太简单了,但是快递.js是到节点.js什么Rails上的Ruby西纳特拉是到红宝石.

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

然后,您可以使用这样的数据库MongoDB数据库具有蒙哥(Mongoose)(用于建模)为Node.js应用程序提供后端。js基本上可以帮助您管理一切,从路由到处理请求和视图。

Redis是一个键/值存储,通常用于Node.js应用程序中的会话和缓存。你可以用它做更多的事,但这就是我用它做的。我将MongoDB用于更复杂的关系,如line-item<->order<->user relationship。有些模块(尤其是connect-redis)将与Express.js一起使用。您需要安装Redis(Redis)服务器上的数据库。

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

6
  • 23
    Express更像是sinatra,而不是rails。
    – 半自我
    评论 2012年9月27日7:30
  • 11
    Express的灵感来源于sinatra。可能它最重要的功能是路由;它还提供了connect提供的所有中间件(除了需要connect中间件的最具体的应用程序外,所有其他应用程序都可能使用express)。 评论 2012年9月27日8:11
  • 我想说,事实上,redis是复杂关系的理想选择。
    – 加-
    评论 2013年7月7日17:57
  • EJS链接当前已断开。 评论 2018年12月29日15:39
  • 我真的不理解MVC与Express的关系。如果我没有记错的话,Express没有模型,也没有视图。这是一个基于中间件的框架,而不是MVC框架。请解释一下。
    – 盖尔曼
    评论 2019年4月8日10:54
21
  1. 什么是Express.js?

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

基于Express构建的框架。

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

LoopBack:快速扩展的开源Node.js框架创建动态端到端REST API。

帆船:MVC框架Node.js用于构建实用的生产就绪应用程序。

Kraken:安全且可扩展的层,通过提供结构和惯例。

含义:Opinionated fullstack JavaScript框架简化并加速web应用程序开发。

  1. 使用Node.js的目的是什么?
  2. 为什么我们实际上需要Express.js?它对我们使用Node.js有何帮助?

Express为Connect中间件添加了非常简单的路由和支持,允许许多扩展和有用的功能。

例如,

  • 想要会话吗?它就在那里
  • 想要POST正文/查询字符串解析?它是那里
  • 想要轻松地模板化玉、胡子、ej等吗?它是那里
  • 希望优雅的错误处理不会导致整个服务器崩溃?
13
  1. Express.js是Node.js的模块化web框架
  2. 它用于更容易地创建web应用程序和服务
  3. js简化了开发,更容易编写安全、模块化和快速的应用程序。你可以在普通的旧Node.js中完成所有这些,但一些错误可能(也将)出现,包括安全问题(例如,不能正确地转义字符串)
  4. Redis是一个内存数据库系统,以其速度快著称性能。不,但您可以使用redis将其与Express.js一起使用客户

我说得再简洁不过了。对于你所有的其他需求和信息,谷歌是你的朋友。

8

ExpressJS是裸骨NodeJS之上的web应用程序框架。

它可以用于快速构建WebApps、RESTFUL API等。

支持多个模板引擎,如Jade、EJS。

ExpressJS的核心功能只保留了最低限度的功能,因此默认情况下不支持ORM或DB。但只要稍加努力,expressjs应用程序就可以与不同的数据库集成。

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

ExpressJS入门教程

4

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

Express是许多以NodeJS为后端的Web应用程序的“骨干”。据我所知,它的主要资产是提供一个路由系统,处理两台主机之间的“交互”服务。它有很多替代品,比如Sails。

2

js是用于Node的框架,它最常用于Node js的web应用程序。

这里有一个视频链接,介绍如何使用express快速设置节点应用程序https://www.youtube.com/watch?v=QEcuSSnqvck

0
2

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

1

ExpressJS是一个web应用程序框架,为您提供了一个简单的API来构建网站、web应用程序和后端。使用ExpressJS,您无需担心底层协议、流程等。Node.js的快速、无钉扎、极简的web框架

Pug(早期称为Jade)是一种用于编写HTML模板的简洁语言。它−

生成HTML支持动态代码支持可重用性(DRY)它是Express使用的最流行的模板语言之一。

1

它的威力的一个完美例子

router.route('/recordScore').post(异步(req,res)=>{让gold_nation=req.body.gold&&req.body.gold.nationality;让silver_nation=req.body.silver&&req.body.silver.nationality;让browne_nation=req.body.bronze&&req.body.bronze.nationality;让competition_id=req.body.competition_id;控制台.log(gold_nation)console.log(silver_nation)req.body.gold&&等待country.updateOne({“flag”:gold_nation},{$inc:{gold:1}});req.body.silver&&等待country.updateOne({“flag”:silver_nation},{$inc:{silver:1}});req.body.bronze&&waiting country.updateOne({“flag”:铜色名称},{$inc:{bronze:1}});控制台.log(比赛id)//等待比赛。updateOne({“_id”:比赛_id},{$set:{recorded:true}});//!! 取消对此的注释并更改模型/竞争。ts将recorer设置为recorded//这是注释掉的,所以你可以测试每一个案例增加奖牌,而不是每次都创造比赛res.status(200).json(“成功”);});异步记录(){let index=this.competitions.findIndex(e=>e._id==this.selectedCompetition);让goldIndex=this.competitors.findIndex(e=>e._id==this.goldWinner);让silverIndex=this.competitors.findIndex(e=>e._id==this.silverWinner);让bronzeIndex=this.competitors.findIndex(e=>e._id==this.bronzeWinner);console.log(this.competitors[goldIndex]);console.log(this.competitors[1-goldIndex]);this.sportService.recordCompetition(this.competitives[goldIndex],竞争对手[1-goldIndex],无效的,this.competitions[index]).subscribe((m:string)=>this.reset(m))}重置(消息:字符串){this.statusMessage=消息;if(消息==“成功”){this.competitions=this.competitions.filter((c)=>c.id!=this.selectedCompetition);this.goldWinner=“”;this.silverWinner=“”;this.bronzeWinner='';}setTimeout(()=>{this.statusMessage=“”;}, 3000);}route.route('/registerCompetitor').post(async(req,res)=>{//! PROVJERI DA LI JE FORMIRANJE TAKMICENJA ZAVRSENO公司让竞争对手=req.body.map(c=>({名称:c.name,性别:c.gender,国籍:c.国籍,运动:c.sport,规程:c.规程}));console.log(竞争对手)等待country.updateOne({“flag”:竞争者[0].国籍},{$inc:{numberOfCompetitors:competitors.length}});等待参赛者。收集.insertMany(竞争对手)然后(u=>{res.status(200).json(“确定”)}).catch(err=>{res.status(400).json(“notOk”);});});
1
  • 您的答案可以通过其他支持信息加以改进。拜托编辑添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是否正确。你可以找到更多关于如何写出好答案的信息在帮助中心.
    – 社区 机器人程序
    评论 2021年9月29日15:40

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.