495

我是Node.js的学习者。

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

10 回答 10

425

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 模块,则必须重新实现许多工作,例如解析有效负载、cookie、存储会话(在内存或 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

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

在此处输入图像描述

全栈:

只是 REST API:

Ruby on Rails 像:

西纳特拉喜欢:

其他:

中间件:

静态站点生成器:

于 2013-07-07T17:54:00.820 回答
295

这过于简化了,但是Express.js之于Node.js就像Ruby on RailsSinatra之于Ruby一样。

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

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

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

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

于 2012-09-27T07:27:33.643 回答
20
  1. 什么是 Express.js?

Express.js 是一个 Node.js Web 应用程序服务器框架,专为构建单页、多页和混合 Web 应用程序而设计。它是 node.js 的事实上的标准服务器框架。

基于 Express 构建的框架。

几个流行的 Node.js 框架是基于 Express 构建的:

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

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

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

MEAN:自以为是的全栈 JavaScript 框架,可简化和加速 Web 应用程序开发。

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

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

例如,

  • 想要会议?在那里
  • 想要 POST 正文/查询字符串解析?在那里
  • 想要通过玉、小胡子、ejs 等轻松模板?在那里
  • 想要优雅的错误处理,不会导致整个服务器崩溃?
于 2016-04-12T11:44:26.057 回答
12
  1. Express.js 是 Node.js 的模块化 Web 框架
  2. 它用于更轻松地创建 Web 应用程序和服务
  3. Express.js 简化了开发,使编写安全、模块化和快速的应用程序变得更加容易。您可以在普通的旧 Node.js 中完成所有这些操作,但一些错误可能(并且将会)浮出水面,包括安全问题(例如,未正确转义字符串)
  4. Redis 是一种内存数据库系统,以其快速的性能而闻名。不,但您可以使用 Redis 客户端将它与 Express.js 一起使用

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

于 2015-04-30T21:46:36.410 回答
7

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

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

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

ExpressJS 仅保留极简功能作为核心功能,因此默认不支持 ORM 或 DB。但只要稍加努力,expressjs 应用程序就可以与不同的数据库集成。

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

ExpressJS 入门教程

于 2016-08-29T21:37:19.540 回答
4

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

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

于 2017-02-15T09:29:37.423 回答
2

Express.js 是用于 Node 的框架,它最常用作 Node js 的 Web 应用程序。

以下是有关如何使用 express https://www.youtube.com/watch?v=QEcuSSnqvck快速设置节点应用程序的视频链接

于 2016-09-11T03:57:52.650 回答
1

它的力量的一个完美的例子


router.route('/recordScore').post(async(req, res) => {   



  
  let gold_nation = req.body.gold && req.body.gold.nationality;
  let silver_nation = req.body.silver && req.body.silver.nationality;
  let bronze_nation = req.body.bronze && req.body.bronze.nationality;
  let competition_id = req.body.competition_id;

  console.log(gold_nation)
  console.log(silver_nation)
  req.body.gold && await country.updateOne({"flag" : gold_nation}, { $inc: { gold: 1 } });
  
  req.body.silver && await country.updateOne({"flag" : silver_nation}, { $inc: { silver: 1 } });
 
  req.body.bronze && await country.updateOne({"flag" : bronze_nation}, { $inc: { bronze: 1 } });
  console.log(competition_id)
  //await competition.updateOne({"_id" : competition_id}, {$set: {recorded : true}});
//!! Uncomment this and change model/competition.ts set recorer to recorded
// this is commented out so you can test adding medals for every case and not creating competitions every time
  res.status(200).json("Success");

});



  async record(){
    let index = this.competitions.findIndex(e => e._id == this.selectedCompetition);
    let goldIndex = this.competitors.findIndex(e => e._id == this.goldWinner);
    let silverIndex = this.competitors.findIndex(e => e._id == this.silverWinner);
    let bronzeIndex = this.competitors.findIndex(e => e._id == this.bronzeWinner);

    console.log(this.competitors[goldIndex]);
    console.log(this.competitors[1-goldIndex]);

    this.sportService.recordCompetition(this.competitors[goldIndex], 
                                    this.competitors[1-goldIndex],
                                    null,
                                    this.competitions[index]).subscribe((m:string) => this.reset(m))



    }

    reset(message: string){
      this.statusMessage = message;
        if(message == "Success"){
          
          this.competitions = this.competitions.filter( (c) => c._id != this.selectedCompetition);
          this.goldWinner = '';
          this.silverWinner = '';
          this.bronzeWinner = '';
        }
  
  
        setTimeout(()=>{                          
          this.statusMessage = '';
        }, 3000);
    
    }


router.route('/registerCompetitor').post(async(req, res) => {   


  //! PROVJERI DA LI JE FORMIRANJE TAKMICENJA ZAVRSENO

  let competitors = req.body.map( c => ({
    name: c.name,
    gender: c.gender,
    nationality: c.nationality,
    sport: c.sport,
    disciplines: c.disciplines
  }));
  console.log(competitors)
  await country.updateOne({"flag" : competitors[0].nationality}, { $inc: { numberOfCompetitors: competitors.length } });


  await   competitor.collection
                                    .insertMany(competitors)
                                    .then( u => {
                                      res.status(200).json("Ok")
                                    })
                                    .catch(err =>{ res.status(400).json("notOk");
                                  });
  
  
});


于 2021-09-29T14:58:04.973 回答
1

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

于 2017-05-22T05:52:28.160 回答
1

ExpressJS 是一个 Web 应用程序框架,它为您提供一个简单的 API 来构建网站、Web 应用程序和后端。使用 ExpressJS,您无需担心低级协议、流程等。适用于 Node.js 的快速、独立、极简 Web 框架

Pug(以前称为 Jade)是一种用于编写 HTML 模板的简洁语言。它 -</p>

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

于 2021-04-20T18:28:55.240 回答