关闭。这个问题是基于意见的。它目前不接受答案。想改进这个问题?更新问题,以便可以通过编辑这篇文章用事实和引用来回答它。 2个月前关闭。社区在 2 个月前审查了是否重新打开此问题并将其关闭:需要更多关注更新问题,使其仅通过编辑此帖子来关注一个问题。改进这个问题
我是 Node.js 的学习者。
什么是 Express.js? Node.js 的目的是什么?为什么我们实际上需要 Express.js?使用 Node.js 对我们有什么用处?什么是 Redis? Express.js 附带它吗?
1) 什么是 Express.js?
Express.js 是一个 Node.js 框架。它是目前最流行的框架(NPM 上最受关注的)。
https://i.stack.imgur.com/eRw5a.png
它是围绕 Connect 中间件的配置和精细的简单性构建的。有些人将 Express.js 与 Ruby Sinatra 与笨重且固执己见的 Ruby on Rails 进行比较。
2) Node.js 的目的是什么?
您不必一遍又一遍地重复相同的代码。 Node.js 是一种具有 HTTP 模块的低级 I/O 机制。如果您只使用 HTTP 模块,那么很多工作,例如解析负载、cookie、存储会话(在内存中或在 Redis 中)、基于 regular expressions 选择正确的路由模式将有要重新实施。有了 Express.js,它就在那里供您使用。
3) 为什么我们实际上需要 Express.js?使用 Node.js 对我们有什么用处?
第一个答案应该回答你的问题。如果不是,则尝试用普通的 Node.js(即仅使用核心模块)然后在 Express.js 中编写一个小型 REST API 服务器。后者将使您的时间和代码行数减少 5-10 倍。
什么是 Redis? Express.js 附带它吗?
Redis 是一种快速持久的键值对存储。您可以选择使用它来存储 Express.js 的会话,但您不需要这样做。默认情况下,Express.js 具有用于会话的内存存储。 Redis 也可用于排队作业,例如电子邮件作业。
查看my tutorial on REST API server with Express.js。
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 星级)。
https://i.stack.imgur.com/1yIPs.png
全栈:
http://sailsjs.org
http://derbyjs.com/
只是 REST API:
http://mcavage.github.io/node-restify/
Ruby on Rails 像:
http://railwayjs.com/
http://geddyjs.org/
西纳特拉喜欢:
http://expressjs.com/
其他:
http://flatironjs.org/
https://github.com/isaacs/npm-www
http://frisbyjs.com/
中间件:
http://www.senchalabs.org/connect/
静态站点生成器:
http://docpad.org
https://github.com/jnordberg/wintersmith
http://blacksmith.jit.su/
https://github.com/felixge/node-romulus
https://github.com/caolan/petrify
这过于简化了,但 Express.js 之于 Node.js 就像 Ruby on Rails 或 Sinatra 之于 Ruby。
Express 3.x 是一个轻量级的 Web 应用程序框架,可帮助您将 Web 应用程序组织成服务器端的 MVC 架构。您可以为您的模板语言使用多种选择(例如 EJS、Jade 和 Dust.js)。
然后,您可以使用像 MongoDB 这样的数据库和 Mongoose(用于建模)为您的 Node.js 应用程序提供后端。 Express.js 基本上可以帮助您管理一切,从路由到处理请求和视图。
Redis 是一个键/值存储——通常用于 Node.js 应用程序中的会话和缓存。你可以用它做更多的事情,但这就是我使用它的目的。我将 MongoDB 用于更复杂的关系,例如 line-item <->订购 <->用户关系。有些模块(尤其是 connect-redis)可以与 Express.js 一起使用。您需要在服务器上安装 Redis 数据库。
这是 Express 3.x 指南的链接:https://expressjs.com/en/3x/api.html
什么是 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 应用程序开发。
Node.js 的目的是什么?为什么我们实际上需要 Express.js?使用 Node.js 对我们有什么用处?
Express 添加了非常简单的路由和对 Connect 中间件的支持,允许许多扩展和有用的功能。
例如,
想要会议?在那里
想要 POST 正文/查询字符串解析?在那里
想要通过玉、小胡子、ejs 等轻松模板?在那里
想要优雅的错误处理,不会导致整个服务器崩溃?
Express.js 是 Node.js 的模块化 Web 框架。它用于更轻松地创建 Web 应用程序和服务 Express.js 简化了开发,使编写安全、模块化和快速的应用程序变得更加容易。您可以在普通的旧 Node.js 中完成所有这些操作,但可能(并且将会)出现一些错误,包括安全问题(例如,未正确转义字符串) Redis 是一种内存数据库系统,以其快速性能而闻名。不,但您可以使用 Redis 客户端将它与 Express.js 一起使用
我不能比这更简洁了。对于您的所有其他需求和信息,Google 是您的朋友。
ExpressJS 是 NodeJS 之上的基本 Web 应用程序框架。
它可用于快速构建 WebApp、RESTFUL API 等。
支持多种模板引擎,如 Jade、EJS。
ExpressJS 仅保留极简功能作为核心功能,因此默认不支持 ORM 或 DB。但只要稍加努力,expressjs 应用程序就可以与不同的数据库集成。
有关创建 ExpressJS 应用程序的入门指南,请查看以下链接:
ExpressJS Introductory Tutorial
Express 是 Node 的一个模块框架,您可以将其用于基于服务器的应用程序,这些应用程序将“侦听”来自客户端的任何输入/连接请求。当您在 Node 中使用它时,它只是说您正在请求使用 Node 模块中的内置 Express 文件。
Express 是许多以 NodeJS 为后端的 Web 应用程序的“骨干”。据我所知,它的主要资产是处理两个主机之间“交互”服务的路由系统的天意。它有很多替代品,例如 Sails。
Express.js 是用于 Node 的框架,它最常用作 Node js 的 Web 应用程序。
以下是有关如何使用 express https://www.youtube.com/watch?v=QEcuSSnqvck 快速设置节点应用程序的视频链接
Express.js 由 TJ Holowaychuk 创建,现在由社区管理。它是 node.js 中最流行的框架之一。 Express 还可用于开发各种产品,例如 Web 应用程序或 RESTful API。更多信息请阅读 expressjs.com 官方网站。
ExpressJS 是一个 Web 应用程序框架,它为您提供一个简单的 API 来构建网站、Web 应用程序和后端。使用 ExpressJS,您无需担心低级协议、流程等。用于 Node.js 的快速、无主见、极简主义的 Web 框架
Pug(以前称为 Jade)是一种用于编写 HTML 模板的简洁语言。它 -
生成 HTML 支持动态代码 支持可重用性 (DRY) 它是 Express 中最流行的模板语言之一。
它的力量的一个完美的例子
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");
});
});
module
。框架内的框架对我来说有点新闻。