那么事件驱动框架的缺点在哪里呢?
- 熟悉。因为事件驱动的 Web 编程是如此不同,程序员需要一段时间才能适应它。当您在截止日期前工作时,使用您所知道的、行之有效的东西会更容易。
图书馆支持。Node 拥有数量惊人的模块,但要赶上 Ruby 和 Python 还有很长的路要走。更新:Node 现在有比 Python 或 Ruby 更多的已发布模块可用。
- 部署。IT 人员习惯于线程化框架。要利用事件驱动的框架,您需要自上而下地异步。现在您可以使用 Node.js 进行开发,但是您是否能够有效地部署它,或者您是否必须管理自己的服务器?
- 毫无根据的担忧。看起来像问题但实际上并非如此的事情:
- 事件驱动编程对 CPU 密集型应用程序不利:原因是 CPU 密集型计算会阻塞服务器。这是绝对正确的,但实际上,它可以通过生成另一个进程并将其视为 I/O 来克服,例如,通过使用 Node 的
child_process.exec
.
- 事件驱动编程仅适用于需要高并发的应用程序:这里的原因是事件驱动编程比传统的 Web 应用程序编程“更难”,所以除非你有充分的理由,否则不值得去做。我个人认为情况并非如此——事件驱动编程不再困难,但它却大不相同。在某个时候,大量的程序员会熟悉事件驱动的方法,这种担忧就会消失。
- 事件驱动编程是一堆嵌套回调。当您第一次学习它时可能是这样,但最终您会发现如何以可读的方式构建您的代码。
- 文档。Node 及其第 3 方库的文档很糟糕,通常只包含一个
README.md
. 来自 Python 世界,我们习惯了优秀的文档,这是一个很大的缺点。这正在慢慢变得更好(我们需要更多这样的文档)。
什么时候我应该更喜欢 Rails 而不是 Node.js?
- 当您或您的团队更喜欢 Ruby 而不是 JavaScript 时。
- 当您或您的团队不熟悉 Node 并且您需要完成工作时。
- 当您需要使用 Rails 中 Node 尚不具备的功能时。
- 当您需要部署到现有的基于 Rails 的基础架构时。
- 当您必须说服管理层您应该使用 Node.js,但如果项目失败,您又不想成为失败者。
为什么所有新的 Web 服务器都不是用 EventMachine、Twisted 或 Node.js 编写的?
往上看。
著名的 Django 或 Rails 框架会转向事件驱动还是消亡?
Django 和 Rails 将存在很长时间。这些框架中有很多应用程序,没有理由重写它们。并且有一个庞大的人才库,这通常是开发新 Web 应用程序时的考虑因素。
(但请参阅Django 的主要开发人员的Quora 回答,支持 Node)。