如果您希望切换到其中一个后端框架,请继续阅读,以获得每个框架的概述,以及它们如何相互堆叠。
大家好,在这篇文章中我们将比较节点。js与Ruby on Rails的web开发。我写这篇文章的主要原因是,我们的团队经常被问到哪种语言或者哪个框架最适合学习。无论如何,我们从不给出一个简单的答案,因为它们不是明确的答案。所以我认为最好的方法就是看看所有的事实和统计数据。我们来看看这两个节点的一些优点和缺点。js和Ruby on Rails的服务器端技术。在我们开始之前,我想做几个要点。所以我们已经可以听到批评人士说,你将如何比较节点。js是Ruby on Rails的运行时,它是一个框架?我得到了这个参数,但是我要比较的是两个服务器端技术和web堆栈。现在,让我们明确一下什么是更好的学习,什么是更好的企业实施。我并不是说要比较Ruby on Rails到Node的直接特性。js如果能让你觉得替换节点更好。类似于Express或其他基于节点的框架。总之,我们比较后端结构和堆栈,而不是单独的技术。我们的团队使用了这两种技术,我们中的一些人都喜欢这两种技术。我不是在推广一个。同样重要的是,理解对我们有用的东西可能对你不起作用,反之亦然。另外,你应该记住每个人的大脑是不同的。对于这个问题,没有一个饼干刀具的答案。
让我们先来看看两种技术之间的一些相似之处。
- 受欢迎的服务器端技术。
- 相当容易学习。
- 高性能。
- 为顶级网站/应用程序使用。
- 强大的社区。
- 基于类似MVC的结构。
- 快速开发。
这两个节点。js和Rails是受人尊敬和流行的服务器端技术,可以做很多不同的事情。它们可以处理许多不同的栈和数据库等等。两者都很容易学。Node使用JavaScript和Rails使用Ruby。但是Ruby和JavaScript比Java、c#或一些高级语言更容易学习。他们都是非常宽容的语言,有大量的学习资源。节点。js和Ruby on Rails表现非常好,我们将讨论性能水平。有很多使用这两种技术的流行网站的例子。节点和Rails具有非常强大和有主见的社区。
Rails已经有了更长的时间,也有更多的旧计时器。但Node每天都在变得越来越流行。现在MVC或模型-视图-控制器是一个设计好的模式。Ruby on Rails有硬MVC。你有一个文件夹,你的模型,你的控制器,和你的视图。在诸如Express这样的节点上,MVC是可能的。然而,Express在结构上比Rails灵活得多。你可以只考虑MVC的某些方面。这并不是唯一可能的结构。节点和Rails用于快速开发和原型开发。Rails有很棒的折叠特性,Express也有生成器和命令行工具。
Rails 的优点
- 一致的结构。
- 非常坚持自我。
- 数据库迁移。
- 开发速度。
- Ruby是一门伟大的语言。
- Ruby gems。
- 成熟和受尊重的社区。
首先,我们来看看Ruby on Rails的优点,以及它的缺点。如前所述,Rails有一个非常强大的MVC结构。大多数Rails应用程序在核心文件和文件夹方面看起来非常相似。你有一个强大的基础,然后你用宝石、定制的包和库建立起来。此外,Rails也很固执己见,这意味着它会让你坚持自己做事的方式。Rails假设你要以某种方式写代码,有些人可能会说这有点限制。但它也使得代码更容易,更简洁,也使得创建错误和问题变得更加困难。这并不是说你不能创造你想要的东西,而是你想要到达那里的方式。如果你用正确的方法,它很可能是最简单的路径。
Rails还具有非常好的数据库迁移功能。它们允许我们在数据库中创建和编辑表格和列,而不必手动添加或更改内容。它还为您提供了一个很好的小日志或路径,您可以按照该路径查看数据库结构的具体操作。
现在节点。有一些针对迁移的包或模块,例如dba迁移,它们可以很好地工作,但是它不像Rails的移植系统那样深入和易于使用。当涉及到原型和快速开发时,没有太多的技术可以击败Rails。因此,有了一些基本配置和几个脚手架命令,您就有了一个完整功能的CRUD应用程序。数据库迁移被添加到这个速度。节点。如果使用第三方工具和模块,js和Express非常适合快速开发。但是Rails把所有这些东西都放在了盒子里。
Ruby语言有一些优点和缺点,但在很大程度上,它很受尊重,而且非常干净。Ruby是一种多范式语言,您可以执行过程代码功能,但在大多数情况下,它是面向对象的。一切都可以看作是一个对象。RubyGems是Ruby on Rails的包管理器,它被用来扩展框架的核心功能。它类似于node . js的npm。所有Rails应用程序都有一个gem文件,您可以在其中指定gem。然后您可以运行一个bundler命令来安装所有的程序,类似于npm安装node . js。
关于Ruby on Rails的另一件伟大的事情是它已经存在了一段时间,它有一个非常受人尊敬的智能社区。维护Ruby on Rails的开发人员非常聪明,对框架非常热情。在核心框架上有大量的资源,包括论坛、博客文章和文档,以帮助你摆脱困境。这些都是Ruby on Rails的一大优势。
Rails 的缺点
- 性能
- 太简单
- 声望
- 缺乏文档
让我们来谈谈它的一些缺点吧。我们听到的关于Ruby on Rails的一些最大的抱怨是相对较慢的。Rails是一个很大的框架,它的核心有很多特性。除了一些较轻的框架之外,您还在gem和应用程序文件依赖项中有这个因素。有太多的自动化和脚手架,开发人员并没有真正了解Rails框架是如何工作的。您可能了解Ruby语言,了解其应用程序的语法或结构,但对于真正了解Rails如何工作的人来说,这很好,因为它的快速开发。另一方面,一些开发人员真的需要多走一段路才能真正理解某些事情。对于大型项目来说,Rails也比小型应用程序更困难。它也会有一些问题。
另一个缺点是Rails不像node . js那样受欢迎。在这个时候,节点。js在web开发的前沿,对Rails的兴奋已经下降。在我们看来,如果你正在找工作,我们肯定会说学习节点,可能是表达。与其他语言相比,更多的公司雇佣JS开发人员。如果这是五年前的事,那么Rails或Ruby将是学习的三大语言之一。但这些日子并不那么受欢迎。因此,我在前面简单提到过,核心Rails框架有一些非常好的文档和示例,允许您学习简单的搭建命令和数据库迁移。那都是很好。然而,当你尝试学习更高级的编程时,你正在努力学习一些特定的宝石,有时感觉就像在干草堆里找一根牛顿针。
一些相当大的名字在他们的平台上使用或确实使用了Ruby on Rails。我不认为你能比推特更大。此外,由于一些伸缩性问题,他们已经将许多后端服务迁移到Scala和Java。但是他们使用Rails很长时间了,我很确定他们仍然在他们的平台的其他方面使用它,比如他们与Shopify的合作。此外,Basecamp是一个项目管理解决方案,它说Rails是他们项目的核心和灵魂。运行GitHub的软件是在Rails上构建的。Soundcloud和Hulu是一个很受欢迎的流媒体服务,它是在Rails上构建的。从一开始,Groupon和LivingSocial、SlideShare和Urban Dictionary都在开发中使用了Rails。
Node.js 的优点
- 非常受欢迎。
- 高性能。
- 异步。
- 非常可扩展。
- JavaScript前端和后端。
- 灵活的文件结构。
- npm和模块。
现在我们看了Rails,现在开始看node . js。我们将从优势开始。一个巨大的节点。js非常受欢迎。它基本上是web开发中的新前沿技术。市场需求非常旺盛。它非常受初创公司的欢迎。在Node和Express框架周围有一个繁荣的开源社区。在npm中有许多很好的开发模块,当涉及到速度和性能节点时,就会把Rails从水里拉出来。事实上,它几乎敲掉了水里的任何东西。它在谷歌JavaScript引擎上运行,速度很快。Node用于构建实时的web应用程序,几乎让人感觉像是桌面应用程序。
接下来,节点。js是异步的。这意味着当一个程序向服务器发送请求时,它不必等待应答。它可以继续执行。节点运行在一个线程上,而不是发送请求的其他语言。他们等待这个请求完成,然后发送下一个,以此类推。所以节点。js也非常具有可伸缩性,而且在一个线程上也有很大的作用。Node也很适合像MongoDB这样的NoSQL数据库,它比像MySQL这样的传统关系数据库更具伸缩性。几乎所有我读过的大公司都转向了Node。他们至少报告了生产率的大幅提高。
另一个重要的节点优势是它使用JavaScript,它广泛应用于许多web栈。很多时候,前端的语言与后端不同,但使用node . js时并不是这样。我们在前端和后端使用JavaScript。有大量的客户端框架主导着行业——反应,角度,vue.j。对node . js来说,这是一个巨大的优势。显然,JavaScript也可以很好地使用JSON api,这很受欢迎。
Node.js,Express或Happy.js,这些框架都有一个非常灵活的文件结构。它们允许您按照自己的意愿构建应用程序。你可以把所有的东西都塞进一个应用JS文件里。如果你想拥有更多的传统MVC结构,我认为这两者都有好的一面和坏的一面。但在大多数情况下,如果你知道你在做什么,你是一个好的程序员,那么灵活性是一件好事。和Ruby gems一样,Node也有自己的包管理器,叫做npm,或节点包管理器。npm和Ruby gems之间最大的区别在于依赖关系的管理方式。在Ruby中,依赖项是在全局环境中安装的。所以你必须使用一个bundler,你必须自己管理它们。实际上,npm为您的模块提供了所有这些功能。它们被放到节点模块文件夹中。然后,这些模块也可以有自己的节点模块文件夹,其中有它们自己的依赖项。npm模块似乎也有更好的文档,至少在我的经验中是这样。
Node.js 的缺点
- 糟透了的CPU密集型任务。
- 不一致性。
- 较新的技术。
- 回调地狱。
- 太模块化。
所以我们研究了node . js的优点和优点。现在我们来看一些缺点。对于许多CRUD风格的应用程序来说,Node很好,它对CPU密集型应用程序非常糟糕。这样做的原因是,每当它做一些事情,比如CPU操作时,它就会对所有传入的请求进行排队,因为它运行在一个线程上。像Apache这样有更多可用线程的东西,将在它们之间分配CPU时间。只有IO操作是并行的,因为它们是异步执行的。CPU密集型任务的一个例子是3d渲染、视频编码、科学建模等。
关于Node的另一个抱怨是,它可能有点不一致。有些人认为API经常会不断变化。它有时不是很向后兼容的。不仅如此,一般来说,Express应用程序的结构是非常自由和灵活的。有时它可以给开发者足够的绳子来挂自己。
Rails是非常严格的,因此很难编写糟糕的代码。因为节点是异步的,所以你要处理大量的回调函数,它们经常会冒泡,进入所谓的“回调地狱”。这里有一些解决方案,例如async实用程序和使用承诺。你可以做一些事情来阻止它。这一点并不困扰我,但我知道一些不习惯异步编程的开发人员有很多回调问题。
您可以看到这两个后端选项都有它们的优点和缺点,但它们都是出色的技术。每件事都应该逐案评估,而不是只说一个在所有情况下都比另一个好。
未经允许不得转载:爱前端网 » Node.js与Ruby on Rails:二者哪个最适合Web开发?