Node.js的用法 – 它提供了什么障碍?

我试图让我的头在哪里节点适合英寸它是利基,所以说…节点旨在提供一个斜坡是什么障碍?

我已经通读了这些例子,并看了一些演示video。 这一切看起来非常光滑…创build一个简单的Web服务器; 创build一个简单的TCP / IP聊天服务器; 使用Node作为数据库服务器的基于JSON的前端…但是它在哪里适合? 我的意思是,除了最后一个例子,Node有什么用?

我想我问的是:你会用什么节点? 为什么?

说服老板

使用节点的理由清单:

  • 速度。 V8很快。 它比Python更快,它比PHP更快。
  • Evented IO。 IO正确完成。 没有搞乱线程,一切都很好,很容易。
  • 低级别的Web服务器。 用dynamic语言对抽象进行很好的控制。
  • JavaScript的。 在编写asynchronous代码方面有很多开发人员的经验。 所有事情都可以用一种语言(客户端,服务器端,数据库访问)完成,开发速度快,维护性好。

可以与node.js一起使用的库和工具:

  • express.js :MVC Web框架。 很轻巧。 给你路由和意见。 build立在connect.js上。 开箱即用,支持多个CSS和模板引擎,灵活地控制视图和路线。 和node.js本身一样,它是简单的,可以让你对你的web服务器进行细粒度的控制。 就我个人而言,我发现控制权和抽象权之间的平衡。
  • socket.io :事实上的websocket抽象。 很多优雅的退化支持build立在浏览器没有websocket使用彗星技术或闪存桥梁。 让您可以毫不费力,简单和实时地在客户端和服务器之间进行通话。
  • now.js :build立在socket.io之上,并为您提供跨客户端和服务器的同步名称空间。 允许您从客户端调用服务器方法,反之亦然。

所有这些库都基于这样一个事实:node.js允许您以低级别的方式处理所有事务,并且与客户端的通信很stream畅,因为两端使用相同的语言。

对我来说卖点是我在客户端和服务器上有相同的MVC库backbone.js 。 我的所有型号代码被重新使用。 客户端和服务器上的模型在now.js上是同步的。

我的数据库访问是由cradle (或mongoose )驱动的,这些都是用JavaScript编写的。 其实我的MVC直接绑定到数据库,并无缝地保存我的模型。 模型定义了一些有用的方法,例如savefetch来执行持久性数据库存储。 我不手动触摸数据库,因为我的MVC允许我插入数据库驱动程序来为我做这个。

我的模板渲染是用EJS完成的,我的视图是在客户端和服务器之间共享的。 只需要大量的代码重用,而且我的整个Web开发都是用JavaScript来完成的,这意味着我不必切换编码范例或风格。

我也不难确定如何处理服务器上生活的和客户端之间的灰色区域,因为灰色区域已经完全平滑,客户端和服务器无缝集成。

如果你要编写一个复杂的dynamicAJAX Web应用程序,那么node.js是一个完美的select。 如果你要有一个静态网站,那么node.js是一个完美的候选人(你在20分钟内设置)。

如果你打算写一个服务器很less的客户端function和回发网站,那么也许你最好使用PHP或ASP.NET。 但是,如果你这样做,你应该看看更dynamic的客户端function和使用AJAX。

我相信Node.js的一个优点是它适合作为一个websockets服务器。 Node.js中的连接很便宜(因为它周围的框架非常less),因此单个系统可以支持多个持久连接。

well节点适合于保持大量的开放连接(对其他节点,服务等)。

这应该让你对其performance与其他人相比(+作为奖金的讨论): 规模堆栈vs node.js与扭曲vs事件

Node也适合shell /terminal脚本语言,很好的例子是:github.com/indexzero/forever

而作为javascript @服务器端解决scheme – 缩小了构build前端(html / js)和后端(当前情况下的nodejs)解决scheme之间的差距。

你也可以find这个有用的: 使用Nodejs的项目,应用程序和公司名单

例如,如果查看模块页面,可以获得很多node.js用例。 它不同于大量的路由器,静态文件服务器,Web框架和WebSockets服务器,以及大量的数据库特定的连接模块,独立的数据库,TCP / IP服务器和stream行的协议/库包装,这些都等着用来构build其他的疯狂像这些公司一样。

我想说,如果你想利用轻量级,低级别和快速的服务器端框架,并使用均衡的IO,并提供丰富的开源社区驱动库(你应该,或者宁愿为了构build其他模块或者将其作为独立项目的基础(或者作为node.js比其他解决scheme可以做得更好的特定function的补充),也必须知道JavaScript。

这是一个很好的问题! 正如你所说,用Node编码是快速和简单的。 这不是唯一的快速和简单的工具,但是,是什么使它独特? 我期待着其他答案!

我的贡献:使用Node的一个优点之一就是可以用JavaScript编写客户端和服务器端代码。 这给你一个代码重用性的余地,否则你不会有。

目前,我正在使用一个伟大的等距游戏引擎写在node.jsnetworking创build的path,视口,摄像头,地图..如果你碰巧想做一个MMO数以百万计的人..然后node.js可以是一个选项。