我读到的关于为什么使用 node.js 的最常见主题是高可扩展性,因为它是事件的、非阻塞 I/O 模型。我正在尝试了解其他不可扩展的用例(除了用作一般的服务器端 javascript 引擎之外)。
- 如果我不关心可扩展性,node.js 是否还有其他用例?
- 如果#1 是,它们是什么?
- node.js 的使用是否适合任何特定类型的应用程序架构?例如,类似于某些键/值(nosql - 呃我讨厌这个术语)数据库除了出于可伸缩性原因之外的用途。
我读到的关于为什么使用 node.js 的最常见主题是高可扩展性,因为它是事件的、非阻塞 I/O 模型。我正在尝试了解其他不可扩展的用例(除了用作一般的服务器端 javascript 引擎之外)。
我尝试使用 node 的原因是,在服务器和客户端之间为 ajax 请求发送 JSON 数据非常容易。如果你使用像 MongoDB 这样的东西,它也将数据存储为 JSON 对象,你永远不必担心翻译或解析你的数据。
如果您的站点使用大量 ajax,并且您将数据作为 JSON 对象(而不是 XML 或纯文本)发送,那么 node.js 将为您节省相当多的工作量。
我认为这篇博文总结得很好: http ://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb
简而言之(pro node.js):
node.js 真的很棒。试试看!:)
我能想到一个原因,但不是很深。基本上,如果您正在开发 RIA,您的整个堆栈都可以是 javascript。那可能有一些价值。
但我会质疑我自己的答案,即想法是,即使它使客户端开发人员更容易访问服务器端代码,他们仍然需要了解他们的服务器堆栈是如何工作的。所以还是有一些学习的。
准确地说,我认为您问题中的通用服务器端 JavaScript 引擎将是 V8,而根据其创建者的说法,Node 是为“脚本网络程序”而构建的。
根据他的许多评论,我认为他并不像我们许多人那样广泛地看待它,但认识到它可以去哪里。[我不能代表任何人——这只是我根据我所看到的着作和演讲的解释。]
所以它从一个较低的层次来处理事情,使 HTTP 成为一等公民并且恰好真的很酷,我认为这对我们大多数人来说已经足够“用例”了。;)
它确实有一个学习曲线,并且由于其快速发展,它并不是最稳定的构建平台。我相信时间会告诉我们哪里最有用。
目前,由于它的轻量级、异步特性以及一般的 Web 开发,人们正在将它用于“实时”应用程序,尽管 IMO 的最佳点仍然是其最初声明的目的。
除了非阻塞 I/O 模型、可扩展性和所有“主要原因”之外,我还喜欢 node.js:
我喜欢使用 NodeJS 编写测试工具,因为您可以非常快速地编写存根/服务器/客户端。您可以轻松地驱动您的应用程序。我可以轻松编写第三方后端服务器的脚本来对我的应用程序进行性能测试。我也用它来驱动我的应用程序。我可以使用 setTimout 执行复杂的客户端服务器场景,以根据我想要的任何逻辑触发多个事件并大规模测试它们。