Node.js提供了Rails没有提供的东西吗?

当我于2012年底获得计算机科学学位时,Ruby on Rails在创业人群中达到了顶峰。 似乎每个热门创业公司都在使用它。

由于我一直(并且仍然是)是初创公司的忠实拥护者,因此我申请了各种初创公司,大学毕业后的第一份工作最终是在一家9人的公司中担任Rails程序员。

我首先进入Rails,并学习了如何快速制作Web应用程序。

在我看来,Rails的吸引力很简单:相信框架为您设置的默认标准,您就可以快速创建Web应用程序。

以我的经验,Rails在很大程度上实现了这一承诺。 默认设置是明智的。 没有太多陷阱。

另外,借助Heroku等托管服务提供商,您可以在几分钟内将您的应用程序发布给全世界。

切换到Node.js

毕业后四年(2016年底),Rails仍然很受欢迎,但是Node.js成为程序员的新时尚,因为此Stack Overflow问题图显示:

我结束了从事Node.js工作的工作。 看到另一种语言和框架如何创建Web应用程序对我来说是一个很好的变化。 我在接下来的两年中最终完成了Node.js。

在我看来,有两个想法使Node.js变得流行。

首先,非阻塞I / O意味着您的应用程序可以比具有Rails等阻塞I / O的框架更快地扩展。

其次,您可以使用javascript在客户端和服务器上编写代码,从而减少必须编写的代码量。

对于第一个好处,Node.js轻松击败了Rails。 在线上有很多关于Rails扩展与扩展的文字,所以在这里我不再继续讨论。

我要说明的是,在Node.js上进行扩展比在Rails上容易得多。 有一些库和功能可以帮助Rails进行扩展,但是默认情况下,Node的扩展性要好得多。

这表明,因为Ruby通常不比javascript慢一些

但是,与Rails服务器相比,Node服务器通常可以处理更多的请求

当您必须创建实时应用程序(例如聊天室)时,Node的非阻塞I / O确实很出色。 Node上的WebSocket可以直接扩展。 Rails上的WebSockets不容易扩展。

Node感觉就像是为实时应用程序制作的。 Rails用于同步HTTP请求,并在以后添加了实时功能。

对于第二个好处,我感觉服务器和客户端上没有javascript有很大的不同。

客户端上的代码和服务器上的代码不同。 通过在服务器和客户端上使用相同的语言保存的代码充其量是很小的。

我认为Node中比Rails中更容易实现的功能是单页应用程序。 相反,我发现将单个页面连接到后端需要在这两个页面上进行类似的工作。

最后,我想说在客户端和服务器上使用相同的语言既不是专家也不是专家。

节点没有做到的Rails正确之处

那么,Node有什么问题? 简而言之:与Node相比,在Rails上开发Web应用程序总是感觉更容易,更快捷。

我已经建立了几个新的Node.js项目,每次都遇到古怪的问题。

默认的软件包系统(npm)会导致各种问题。 我已经与一些具有多年Node经验的程序员进行了交谈,他们都有npm的恐怖故事。

必须创建Yarn作为替代品这一事实告诉您所有您需要知道的。 这是一个简单的图表,显示Yarn比npm快多少:

由于某些原因,创建开源javascript库的程序员经常进行重大更改。 我无法数出在Node应用程序中升级软件包时遇到问题的次数。

我很确定我在职业生涯中遇到过与Rails的兼容性问题不到五次。 我在Node中至少遇到了15次兼容性问题。

另外,由于Node并不是一个完整的框架,因此有许多重要的技术供您选择。

您是否使用MongoDB或PostgreSQL或MySQL作为数据库? 您是否使用React或Ember或不使用前端框架?

这只是冰山一角。 我估计您必须在应用程序中至少选择五项重要技术。

更糟糕的是,如果您选择了一个不寻常的组合(可能),那么您不太可能找到Stack Overflow对可能遇到的任何问题的答案。

对于Rails来说,我几乎总是可以对出现的任何问题都能获得可靠的Stack Overflow答案。 我觉得对于遇到的任何Node问题,我很少能得到可靠的Stack Overflow答案。

我几乎可以保证有些程序员会叫我出来,说我不了解Node或我不是一个好的程序员。

即使我不是一个优秀的程序员,我的技能和理解也很重要。 我所知道的是,在Rails中,我总是比在Node中更高效。

Ruby和Rails经过深思熟虑,以JavaScript和Node从未有过的方式变得简单。

我对Rails vs Node的最终思考

当我回顾了两者的时间时,我不禁愤世嫉俗地感到Node之所以如此受欢迎的真正原因是因为编程世界对Rails感到无聊。

我并不是说Node是不好的技术。 实际上,当您将其用于正确的目的时,我认为它很棒:创建可伸缩的实时Web应用程序。

但是,如果您想快速创建Web应用程序而没有太多麻烦,那么我仍然没有找到比Rails更好的选择。

即使您的应用程序需要少量的实时功能,我还是会选择Node上的Rails。 向Rails添加实时功能的麻烦要比Node的麻烦少。

只有当我需要使用主要的实时组件创建一个我将使用Node的应用程序时(例如Slack克隆)。

我并不是说“老”和“无聊”的技术总是比“新”和“性感”的技术更好。

而是选择可以帮助您尽快创建可维护软件的技术。 最终这才是重要的。

From: https://hackernoon.com/what-did-nodejs-provide-that-rails-didnt-m7uh33vx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值