关于Rails和Node.js的澄清

Mat*_*zzi 17 ruby ruby-on-rails node.js

到目前为止,我总是在有或没有框架的情况下使用PHP,但一个月前我决定开始新的东西:Ruby和Rails,我发现它们非常简单,类似于PHP和一些PHP框架,它们如何工作但使用更简单语法和许多其他优点.

几天前我开始阅读Node.js,Node.js vs Rails,"为什么node.js更好"......

我有点困惑,但我的目标是学习一些现代化的东西,这些东西在几个月内不会过时,所以:

Rails/Ruby和Node.js之间的主要区别是什么?基于它的框架如Express.js(除了一个用JS编写,另一个用Ruby编写)?

使用基于它的Node.js和框架而不是像Rails这样基于Ruby的解决方案有哪些主要优点/缺点?

谢谢!

Jos*_*ber 35

Node.js和Rails之间没有足够的差异,因为它实际上很重要.

很多Node.js的什么可以做,可以拉断在Rails的事情喜欢EventMachine的和推动者.因此,除非你真的熟悉Rails的局限性,并且知道你将要突破界限,否则你很难做出经验丰富的Rails开发人员无法做到的事情.

在Node和Express中构建应用程序我可以说仅靠它们并不足以构建性感的应用程序.如果你没有一个出色的前端UI来促进后端可能性,它们看起来就像旧的和陈旧的一样.而不是比较后端服务器,我认为做出惊人事情的真正未来是在Backbone.js等前端JavaScript框架中,后端使用Express/Rails/Node.js.

我已选择使用Rails作为后端API服务器向Backbone.js方向发展.因为在Rails中快速创建一个非常好的RESTful后端服务器非常容易.Rails还使用CoffeeScript和预编译/组织Backbone代码变得轻而易举.Rails已经有了不错的Backbone.js宝石.

Rails核心也能够承认并接受这样一个事实,即前端JS MVC在逻辑上是一个很好的下一步,他们一直在努力加强两者之间的联系.出于同样的原因,他们还努力使Rails成为更好的API服务器,以便它可以更容易地使用前端JS.Node.js和Express并没有像Rails社区那样花费太多精力与前端JavaScript MVC进行协调.

良好的JavaScript前端MVC和Rails作为后端使你在获得工作方面也很适合两个世界.您可以轻松地跳转到Node.js项目,并通过您卓越的前端体验为该团队增加价值,您还可以在Ruby on Rails团队中轻松应对并为其增加价值.

  • 前面的JS就是一切.它允许您快速构建性感的界面,可以不断更新网页的小块.它还可以轻松地查询您的Rails API服务器并准确地抓取它所需的数据对象,而不会异步地完成所有这些操作.仅在Node或Express中构建就可以为您提供正常的网站.它在后端是异步的,但如果你不能*看到*它在你眼前发生,这无关紧要. (5认同)
  • 哦,还有一件事,你从后端服务器中解脱出来.您可以使用PHP构建后端,如果您不喜欢它的工作原理,您可以在没有应用程序了解或关心的情况下使用Rails.如果您不喜欢Rails如何工作,请抛弃它并使用Node.js - 将来如果SuperNode出现,您可以抛出Node并使用SuperNode,或者只使用HTML5离线存储 - 它都适用于您的应用程序开箱即用. (4认同)
  • 前端JS的另一个好处是您可以在客户端上运送和存储整个应用程序.您的整个应用程序在第一个请求时加载,并且永远不需要再次查询其他Javascript或CSS.这也允许您将其打包并在Android和iOS设备上轻松发货. (3认同)
  • 使用JavaScript MVC,您的所有JS都是有条理的,您的视图也是有组织的.您可以将数据字段映射到视图的不同部分,并说"观察这些字段" - 如果这些字段发生变化,视图会自动更新.您可以使用函数来帮助您查询数据并轻松地对其进行排序.您不必操纵DOM,只需将字段映射到DOM并说"渲染此视图",它就知道该怎么做.您还可以定义自己的路由,因此整个应用程序永远不会加载新页面.它使您的整个网站成为一个性感的实时"应用程序"变得非常容易. (3认同)

sbg*_*ran 5

正如官方Node.js网站解释的那样:

Node.js是一个基于Chrome JavaScript运行时的平台,可轻松构建快速,可扩展的网络应用程序.Node.js使用事件驱动的非阻塞I/O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序.

另一方面,Ruby on Rails官方网站上说:

Ruby on Rails是一个开源的Web框架,针对程序员的快乐和可持续的生产力进行了优化.它允许您通过支持约定优于配置来编写漂亮的代码.

鉴于此,我认为比较Ruby和Node.js更合适,但即使这是不正确的,因为Ruby是编程语言而Node.js不是.您可以将JavaScript与Ruby进行比较,但我想这不是您要问的问题:)

因此,对于我来说,理解Node.js真正想要完成什么的关键点在Node.js关于页面上有详细描述.关键Node.js的想法(对我来说)在这句话中描述:

Node在设计上类似于Ruby的Event Machine或Python的Twisted等系统.Node进一步采用事件模型 - 它将事件循环呈现为语言结构而不是库.在其他系统中,始终存在阻塞调用以启动事件循环.通常,在脚本开头通过回调定义行为,最后通过阻塞调用(如EventMachine :: run())启动服务器.在Node中没有这样的start-the-event-loop调用.节点在执行输入脚本后简单地进入事件循环.当没有更多回调要执行时,节点退出事件循环.此行为类似于浏览器javascript - 事件循环对用户隐藏.

这应该使您能够轻松编写高度并发的程序,而不必考虑使用JavaScript语法和回调函数作为基本并发可运行单元的并发性.