我对这类东西很陌生,但最近我听到了很多关于Node.js有多好的消息。考虑到我非常喜欢使用jQuery和JavaScript,我不禁想知道如何决定何时使用Node.js。
从过去几天我做的所有作业中,我得到了以下信息。节点.js
是一个命令行工具,可以作为常规web服务器运行,并允许运行JavaScript程序利用了出色的V8 JavaScript引擎当你需要同时做几件事时是基于事件的,所以所有类似Ajax的精彩内容都可以在服务器端完成让我们在浏览器和后端之间共享代码让我们谈谈MySQL
我遇到的一些来源是:
深入Node.js–介绍和安装了解NodeJS按示例列出的节点(存档.is)让我们制作一个Web应用程序:NodePad
考虑到Node.js几乎可以在Amazon的EC2实例上开箱即用,我试图了解Node.js需要什么类型的问题,而不是PHP、Python和Ruby等强大的王者。我知道这确实取决于一个人对语言的专业知识,但我的问题更多地属于一般范畴:什么时候使用特定的框架,它特别适合什么类型的问题?
它可以用于
高度事件驱动且严重受I/O限制的应用程序处理与其他系统的大量连接的应用程序实时应用程序(Node.js是从一开始就为实时和简单而设计的使用。)应用程序可以处理来自其他来源的大量信息流高流量、可扩展的应用程序移动应用程序必须与平台API和数据库通信,而无需处理大量数据分析构建网络应用程序需要经常与后端通信的应用程序
在移动方面,黄金时段公司的移动解决方案依赖Node.js。看看为什么?
LinkedIn是一个杰出的用户。他们的整个移动堆栈都建立在Node.js上。他们从在每台物理机器上运行15个服务器和15个实例,到只运行4个实例,可以处理双倍的流量!
eBay推出了ql.io,这是一种用于HTTP API的web查询语言,它使用Node.js作为运行时堆栈。他们能够调整一个常规开发人员质量的Ubuntu工作站,以处理每个node.js进程超过120000个活动连接,每个连接消耗大约2kB内存!
沃尔玛将其移动应用程序重新设计为使用Node.js,并将其JavaScript处理推送到服务器。
更多信息请访问:http://www.pixelatingbits.com/a-closer-look-at-mobile-app-development-with-node-js/
你总结了Node.js的优点,做得很好。我的感觉是,Node.js特别适合那些希望保持浏览器与服务器之间持久连接的应用程序。使用称为“长轮询”的技术,您可以编写一个实时向用户发送更新的应用程序。在Ruby on Rails或Django等网络巨头上进行长时间的轮询会给服务器带来巨大的负载,因为每个活动客户端都会消耗一个服务器进程。这种情况相当于停机坪袭击。当您使用Node.js之类的东西时,服务器不需要为每个打开的连接维护单独的线程。
这意味着您可以在Node.js中创建一个基于浏览器的聊天应用程序,它几乎不需要系统资源就可以为大量客户机提供服务。任何时候你想做这种长轮询,Node.js都是一个很好的选择。
值得一提的是,Ruby和Python都有做这类事情的工具(分别是eventmachine和twisted),但Node.js从一开始就做得非常好。JavaScript非常适合基于回调的并发模型,并且在这里表现出色。此外,能够使用客户端和服务器上的JSON进行序列化和反序列化是非常不错的。
我期待着在这里阅读其他答案,这是一个很棒的问题。
值得指出的是,Node.js也非常适合在客户机/服务器之间重用大量代码的情况。Meteor框架使这变得非常简单,许多人都认为这可能是web开发的未来。根据经验,我可以说在Meteor中编写代码非常有趣,其中很大一部分是花更少的时间思考如何重组数据,这样浏览器中运行的代码就可以轻松地处理数据并将其传递回去。
这是一篇关于金字塔和长轮询的文章,事实证明,在gevent:TicTacToe和长轮询与金字塔的帮助下,这很容易设置。
我认为Node.js最适合实时应用程序:在线游戏、协作工具、聊天室,或者任何一个用户(或机器人?或传感器?)使用应用程序所做的事情都需要立即被其他用户看到,而无需刷新页面。
我还应该提到,Socket.IO与Node.js的结合将比长轮询更进一步地减少实时延迟。作为最坏的情况,Socket.IO将退回到长轮询,而是使用web套接字甚至Flash(如果可用的话)。
但我还应该提到,Node.js可以更好地解决代码可能由于线程而阻塞的任何情况,或者需要应用程序是事件驱动的任何情况。
此外,Ryan Dahl在我曾经参加的一次演讲中表示,Node.js基准测试在常规旧HTTP请求方面与Nginx不相上下。因此,如果我们使用Node.js构建,我们可以非常有效地服务于我们的正常资源,当我们需要事件驱动的东西时,它就可以处理它了。
此外,它一直都是JavaScript。整个堆栈上都是Lingua Franca。