我是node . js的学习者。
这是过度简化,但Express.js之于node . js,就像Ruby on Rails或辛纳特拉之于Ruby。
表达3。x是一个轻量级的web应用程序框架,帮助您在服务器端将web应用程序组织成MVC架构。你可以为你的模板语言使用多种选择(比如EJS, 玉,和Dust.js)。
然后你可以使用像MongoDB这样的数据库和猫鼬(用于建模)来为你的Node.js应用程序提供后端。js基本上帮助你管理一切,从路由到处理请求和视图。
Redis是一个键/值存储——通常用于Node.js应用程序中的会话和缓存。你可以用它做更多的事情,但这就是我用它的目的。我使用MongoDB处理更复杂的关系,如行项目<->订单<->用户关系。有一些模块(最著名的是connect-redis)将与Express.js一起工作。你需要在你的服务器上安装复述,数据库。
这是快车3号的链接。x指南:https://expressjs.com/en/3x/api.html
1) Express.js是什么?
Express.js是一个node . js框架。它是目前最流行的框架(NPM中最受欢迎的框架)。
。
它是围绕Connect中间件的配置和粒度简单性构建的。有些人将Express.js比作Ruby辛纳特拉,而不是笨重且固执己见的Ruby on Rails。
2) Node.js的目的是什么?
你不需要一遍又一遍地重复相同的代码。Node.js是一个低级的I / O机制,它有一个HTTP模块。如果你只是使用一个HTTP模块,大量的工作,如解析有效负载、cookie、存储会话(在内存或复述,中)、基于正则表达式选择正确的路由模式将会被重新实现。使用Express.js,它就在那里供你使用。
3)为什么我们真的需要Express.js?它对我们使用Node.js有什么用处?
第一个答案应该能回答你的问题。如果没有,那么试着用普通的Node.js(也就是说,只使用核心模块)写一个小的休息 API服务器,然后用Express.js。后者将节省5-10倍的时间和代码行数。
什么是Redis?它自带Express.js吗?
Redis是一个快速持久的键值存储。你可以选择使用它来存储Express.js的会话,但你不需要这样做。默认情况下,Express.js为会话提供内存存储。Redis也可以用于排队作业,例如,电子邮件作业。
查看我的教程REST API服务器与Express.js。
MVC,但不是它自己
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星级)。
完整:
http://sailsjs.org
< a href = " http://derbyjs.com/ " rel = " noreferrer > http://derbyjs.com/ < / >
只是REST API:
Ruby on Rails:
http://railwayjs.com/
< a href = " http://geddyjs.org/ " rel = " noreferrer > http://geddyjs.org/ < / >
辛纳屈:
其他:
http://flatironjs.org/
https://github.com/isaacs/npm-www
http://frisbyjs.com/
中间件:
静态站点生成器:
http://docpad.org
https://github.com/jnordberg/wintersmith
< a href = " http://blacksmith.jit。苏/ noreferrer“rel = > http://blacksmith.jit.su/ < / >
https://github.com/felixge/node-romulus
https://github.com/caolan/petrify
我不能比这更简洁了。对于你所有其他的需求和信息,谷歌是你的朋友。
Express.js是一个Node.js web应用服务器框架,专为 构建单页、多页和混合web应用程序。它是 node.js事实上的标准服务器框架
基于Express构建的框架。
以下几个流行的Node.js框架都是基于Express构建的:
LoopBack:高度可扩展,开源的Node.js框架 .创建动态端到端REST api 风帆:MVC框架 .js用于构建实用的、可生产的应用程序 Kraken:安全和可扩展的层,通过提供结构和扩展Express 公约。< / p > MEAN:自以为是的全栈JavaScript框架 .简化和加速web应用程序开发
风帆:MVC框架
Kraken:安全和可扩展的层,通过提供结构和扩展Express 公约。< / p >
MEAN:自以为是的全栈JavaScript框架
Express添加了非常简单的路由和对Connect中间件的支持,允许许多扩展和有用的特性。
例如,
ExpressJS是NodeJS之上的基本的 web应用框架。
它可以用来快速构建WebApps, RESTFUL api等。
支持Jade、EJS等多种模板引擎。
ExpressJS只保留了一个极简的功能作为核心特性,因此没有orm或db作为默认支持。但只要稍加努力,expressjs应用程序就可以与不同的数据库集成。
关于创建ExpressJS应用程序的入门指南,请查看以下链接:
ExpressJS入门教程
Express.js是一个用于Node的框架,它最常被用作Node js的web应用程序。
这里有一个关于如何快速使用express https://www.youtube.com/watch?v=QEcuSSnqvck设置节点应用程序的视频链接
Express是Node的一个模块框架,您可以将其用于基于服务器的应用程序,这些服务器将“侦听”来自客户端的任何输入/连接请求。当您在Node中使用它时,它只是说您正在请求使用Node模块中的内置Express文件。
Express是许多Web应用程序的“骨干”,这些应用程序的后端都是NodeJS。据我所知,它的主要资产是处理两个主机之间“交互”服务的路由系统。它有很多替代品,比如Sails。
Express.js由TJ Holowaychuk创建,现在由社区管理。它是node.js中最流行的框架之一。Express还可以用于开发各种产品,如web应用程序或RESTful API。更多信息请浏览expressjs.com官方网站。
Pug(早期称为Jade)是一种用于编写HTML模板的简洁语言。它−
这是它力量的完美例子
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"); }); });