除了可伸缩性之外,使用node.js有哪些架构原因?

我所读到的关于为什么要使用node.js的最常见的主题是高可扩展性,因为它是平坦的,非阻塞的I / O模型。 我试图了解其他不可扩展性的用例(除了被用作通用的服务器端JavaScript引擎)。

  1. 如果可扩展性不是我的问题,node.js是否还有其他用例?
  2. 如果对#1是,他们是什么?
  3. node.js用法是否适用于任何特定types的应用程序体系结构? 例如类似于一些键/值(nosql – 呃我讨厌这个词)数据库是有用的除了可伸缩性的原因。

我认为这个博客文章总结得很好: http : //debuggable.com/posts/understanding-node-js : 4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb

总之(pro node.js):

  • 速度
  • Javascript(特别是如果你已经知道)
  • 效率

node.js真的很棒。 试一试! 🙂

我尝试使用节点的原因是,在服务器和客户端之间发送JSON数据非常容易。 如果您使用类似MongoDB的存储数据作为JSON对象的东西,则不必担心翻译或parsing数据。

如果你的站点使用了大量的Ajax,并且你将数据作为JSON对象(而不是XML或纯文本)发送,那么node.js会为你节省一些工作量。

我可以想到一个原因,但不是很深。 基本上,如果你正在开发一个RIA,你的整个堆栈可以是JavaScript。 这可能有一定的价值。

但是,我怀疑自己的答案,即思想是,即使它使服务器端代码更容易访问客户端开发人员,他们仍然需要了解他们的服务器堆栈如何工作。 所以还有一些学习。

为了准确,我认为在你的问题中,一般的服务器端JavaScript引擎是V8,而根据它的创build者Node是为“脚本化networking程序”而构build的。

根据他的许多评论,我不认为他像我们许多人那样广泛地看待这个问题,而是承认它可以去的地方。 [我不能为其他人说话 – 这是我根据我所看到的着作和演讲所做的解释。]

所以它从一个较低的层次接近事情,使HTTP成为一stream的公民,而且碰巧是非常酷的,我认为这对于我们大多数人来说是足够的“用例”。 ;)

它确实有一个学习曲线,并不是因为其快速发展而build立的最稳定的平台。 我相信时间会告诉它最有用的地方。

目前人们正在将它用于“实时”应用程序,因为它的轻量级,asynchronous性,以及一般的Web开发,尽pipeIMO的甜蜜点仍然是其原来的目的。

除了非阻塞I / O模型,可扩展性和所有这些“主要原因”之外,我喜欢node.js:

  • 它的框架的轻量级性质。 基础很容易学习。
  • 开发人员社区在github上构build了大量有用的模块和库,这些模块和库正在扩展node.js轻量级核心及其function。
  • 在没有复杂库的知识的情况下构build服务器端和实时系统(例如基于http或者socket)真的很容易和快速。

我喜欢使用NodeJS编写testing工具,因为您可以很快编写一个存根/服务器/客户端。 而且你可以轻松地驱动你的应用程序。 我可以很容易地编写一个第三方后端服务器来对我的应用程序进行性能testing。 我也用它来驱动我的应用程序。 我可以使用setTimout来执行复杂的客户端服务器场景,以便根据我想要的任何逻辑触发多个事件,并按比例testing它们。