我对这类东西很陌生,但最近我听到了很多关于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等强大的王者。我知道这确实取决于一个人对语言的专业知识,但我的问题更多地属于一般范畴:什么时候使用特定的框架,它特别适合什么类型的问题?


当前回答

Node非常适合快速原型,但我再也不会将其用于任何复杂的事情。我花了20年时间与编译器建立了关系,我真的很怀念它。节点对于维护您已经有一段时间没有访问过的代码尤其痛苦。类型信息和编译时错误检测是好事。为什么要扔掉这些?为了什么?当有东西向南移动时,堆栈的痕迹往往完全没有用。

其他回答

我为新项目选择Node.js的另一个原因是:

能够进行纯云开发

我使用Cloud9IDE已经有一段时间了,现在我无法想象没有它,它涵盖了所有的开发生命周期。你只需要一个浏览器,你可以随时随地在任何设备上进行编码。您不需要在一台计算机(如在家中)中签入代码,然后在另一台计算机中签出(如在工作场所)。

当然,可能有其他语言或平台的基于云的IDE(cloud 9 IDE也增加了对其他语言的支持),但使用cloud 9进行Node.js开发对我来说真的是一种很棒的体验。

我有一个真实世界的例子,我使用过Node.js。我所在的公司有一个客户想要一个简单的静态HTML网站。该网站用于使用PayPal销售一件物品,客户还希望有一个显示售出物品数量的柜台。客户预计会有大量访客访问本网站。我决定使用Node.js和Express.js框架制作计数器。

Node.js应用程序很简单。从Redis数据库中获取已售出物品的数量,在物品售出时增加计数器,并通过API向用户提供计数器值。

在本例中我选择使用Node.js的一些原因

它非常轻便和快速。在三个星期内,这个网站的访问量超过了200000次,服务器资源已经能够处理这一切。计数器很容易做到实时。Node.js易于配置。有很多模块可以免费使用。例如,我找到了PayPal的Node.js模块。

在本例中,Node.js是一个很棒的选择。

我的作品:nodejs非常适合制作实时系统,如分析、聊天应用程序、api、广告服务器等。见鬼,我用nodejs和socket.io制作了我的第一个聊天应用程序,时间不到2小时,考试期间也是如此周

Edit

我开始使用nodejs已经好几年了,我用它制作了很多不同的东西,包括静态文件服务器、简单分析、聊天应用等等。这是我对何时使用nodejs的看法

何时使用

在制作强调并发性和速度的系统时。

仅套接字服务器,如聊天应用程序、irc应用程序等。社交网络强调实时资源,如地理位置、视频流、音频流等。处理小数据块的速度非常快,就像一个分析Web应用程序。作为公开仅REST api。

何时不使用

它是一个非常多功能的Web服务器,因此您可以在任何地方使用它,但可能不是这些地方。

简单的博客和静态网站。就像静态文件服务器一样。

记住,我只是吹毛求疵。对于静态文件服务器,apache更好,主要是因为它广泛可用。多年来,nodejs社区已经变得越来越大,越来越成熟,如果您有自己的托管选择,可以放心地说nodejs几乎可以在任何地方使用。

node提供的另一项功能是能够使用node的子进程(childProcess.f分叉(),每个进程需要10mb内存,根据文档)动态创建多个v8实例,从而不会影响运行服务器的主进程。因此,卸载需要巨大服务器负载的后台工作就成了一个孩子的游戏,我们可以在需要时轻松地杀死他们。

我一直在使用节点,在我们构建的大多数应用程序中,同时需要服务器连接,因此网络流量很大。Express.js和新的Koajs(去掉了回调地狱)等框架使节点的工作变得更加容易。

没有什么比银弹更棒的了。每件事都伴随着一些相关的成本。就好像你吃了油腻的食物,你会损害你的健康,而健康的食物不会像油腻的食物一样含有香料。无论他们想要健康还是食物中的香料,都是个人的选择。Node.js考虑在特定场景中使用的方式相同。如果你的应用程序不适合这种情况,你就不应该在你的应用开发中考虑它。我只是把我的想法放在同一点上:

何时使用Node.JS

如果服务器端代码需要很少的cpu周期。在另一个世界中,您正在执行非阻塞操作,并且没有消耗大量CPU周期的繁重算法/作业。如果您来自Javascript后台,并且能够像客户端JS一样轻松编写单线程代码。

何时不使用Node.JS

您的服务器请求取决于消耗大量CPU的算法/作业。

Node.JS的可扩展性考虑

Node.JS本身并没有利用底层系统的所有核心,默认情况下它是单线程的,您必须自己编写逻辑以利用多核心处理器并使其成为多线程的。

Node.JS替代方案

还有其他选项可以代替Node.JS,但Vert.x似乎很有前途,并且有很多其他功能,如多边形和更好的可扩展性考虑。