成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Node.js vs Ruby on Rails:哪個最適合Web開發(fā)?

開發(fā) 前端 后端
大家好,在本文中,我們將比較Node.js和Ruby on Rails在Web開發(fā)上孰優(yōu)孰劣。我寫這篇文章的主要原因是我們的團隊不斷被問及哪種語言或哪個框架最適合學(xué)習(xí)。無論如何,我們從不給出一個簡單的答案,因為就沒有一個明確的答案。

大家好,在本文中,我們將比較Node.js和Ruby on Rails在Web開發(fā)上孰優(yōu)孰劣。我寫這篇文章的主要原因是我們的團隊不斷被問及哪種語言或哪個框架最適合學(xué)習(xí)。無論如何,我們從不給出一個簡單的答案,因為就沒有一個明確的答案。

我認為***是依據(jù)事實和統(tǒng)計數(shù)據(jù)說話。我們將了解Node.js和Ruby on Rails在服務(wù)器端技術(shù)方面的一些優(yōu)缺點。

[[211622]]

在開始之前,我想先說說我的一些看法。有批評者可能會質(zhì)疑我們?nèi)绾螌⒆鳛檫\行時的Node.js與作為框架的Ruby on Rails進行比較?我接受這樣的質(zhì)疑,但我要比較的是兩個服務(wù)器端技術(shù)和Web棧。我們要弄清楚現(xiàn)在學(xué)什么更好,以及對于業(yè)務(wù)哪個更佳。我的意思并不是說直接比較Ruby on Rails和Node.js的功能,如果你覺得用Express或者其他基于Node的框架代替Node.js會更好的話。無論如何,我們比較的是后端結(jié)構(gòu)和堆棧,而不是個別技術(shù)。

我們的團隊已經(jīng)使用過這兩種技術(shù),并且我們中的一些人對這兩種技術(shù)都很喜歡。我不是在厚此薄彼。重要的是要知道適合我們的可能并不適合你,反之亦然。另外,你應(yīng)該記住,每個人的大腦都是不同的。所以,孰勝孰劣并不定論。

首先讓我們來看看這兩種技術(shù)之間的一些相似之處。

  • 受歡迎的服務(wù)器端技術(shù)。
  • 相當(dāng)容易學(xué)習(xí)。
  • 高性能。
  • 為***網(wǎng)站/應(yīng)用程序使用。
  • 強大的社區(qū)。
  • 基于類似MVC的結(jié)構(gòu)。
  • 快速開發(fā)。

Node.js和Rails都是備受推崇和流行的服務(wù)器端技術(shù),可以做很多不同的事。它們可以與許多不同的堆棧和數(shù)據(jù)庫等等協(xié)同工作。兩者都相當(dāng)容易學(xué)習(xí)。Node使用JavaScript,而Rails使用Ruby。但是Ruby和JavaScript比Java,C#或其他一些高級語言更容易學(xué)習(xí)。它們都是相當(dāng)寬容的語言,有大量的資源可供學(xué)習(xí)。Node.js和Ruby on Rails執(zhí)行優(yōu)良,因此我們將討論性能水平。有很多流行網(wǎng)站使用這兩種技術(shù)。Node和Rails擁有非常強大和堅持自我的社區(qū)。

Rails存在的時間更久一點,有更多老前輩。但是Node日漸變得越來越流行。現(xiàn)在MVC,即Model-View-Controller成為了一種設(shè)計模式。而Ruby on Rails有很強的MVC。針對模型、控制器和視圖有一個文件夾。通過Node中的某些框架,例如Express,可以實現(xiàn)MVC。不過,Express比Rails更靈活。你可以只采納MVC的某些方面。這不是唯一可能的結(jié)構(gòu)。Node和Rails用于快速開發(fā)和原型。Rails有一個很棒的折疊功能,當(dāng)然Express也有生成器和命令行工具。

Rails的優(yōu)點

  • 一致的結(jié)構(gòu)。
  • 非常堅持自我。
  • 數(shù)據(jù)庫遷移。
  • 開發(fā)速度。
  • Ruby是一門偉大的語言。
  • Ruby gems。
  • 成熟和受尊重的社區(qū)。

首先,讓我們來看看Ruby on Rails的優(yōu)點,然后再看缺點。正如我所說,Rails有一個非常強大的MVC結(jié)構(gòu)。大多數(shù)Rails應(yīng)用程序在核心文件和文件夾方面看起來非常相似。有了這個堅實的基礎(chǔ)之后,然后在gems和自定義的包和庫之上構(gòu)建。另外,Rails非常堅持自我,這就意味著它允許你堅持自己的做事方式。Rails假設(shè)你將要以某種方式編寫代碼,有些人可能會說這稍微有點限制。但是它也使代碼變得更簡單,更簡潔,而且也使得更不容易創(chuàng)建錯誤和出現(xiàn)問題。從某種意義上說,你不能制造你想要的東西,但卻是助你到達目的地的途徑。如果你以正確的方式去做,那很可能就是最簡單的方法。

Rails也有非常好的數(shù)據(jù)庫遷移功能。它們允許我們在數(shù)據(jù)庫中創(chuàng)建和編輯表格與列,而無需手動進入去添加或更改內(nèi)容。它也會給你一個很好的小日志或路徑,允許你查看對數(shù)據(jù)庫結(jié)構(gòu)究竟做了什么。

現(xiàn)在再說Node。有一些用于遷移的軟件包或模塊,比如DB-migrate就可以很好地工作,但不像Rails chord migration system那樣深入和易于使用。在原型設(shè)計和快速開發(fā)方面,沒有太多技術(shù)可以打敗Rails。所以,通過一些基本配置和一些scaffolding命令,你可以擁有一個完整的CRUD應(yīng)用程序。數(shù)據(jù)庫遷移被添加到這個速度。如果你使用第三方工具和模塊的話,Node.js和Express在快速開發(fā)方面相當(dāng)不錯。但Rails擁有的所有這些東西都是開箱即用的。

Ruby語言有優(yōu)點也有缺點,但在大多數(shù)情況下,它是很受尊敬的,而且非常干凈。 Ruby是一個多范式語言,你可以做到程序代碼功能化,但大部分是面向?qū)ο蟮摹R磺卸伎梢钥醋魇且粋€對象。RubyGems是Ruby on Rails的包管理器,它用于擴展框架的核心功能。這與Node.js的npm相似。所有Rails應(yīng)用程序都有一個gem文件,你可以在其中指定你的gems。然后運行bundler命令來安裝它們,類似于使用Node.js的npm install。

關(guān)于Ruby on Rails的另一個好處是,它已經(jīng)存在了一段時間,因此擁有一個非常受人尊重的智能社區(qū)。維護Ruby on Rails的開發(fā)人員非常聰明,并且非常熱愛框架。核心框架上有大量資源,包括論壇,博客文章和文檔,以幫助你解決問題。這些都是Ruby on Rails的巨大優(yōu)勢。

Rails的缺點

  • 性能
  • 太簡單
  • 聲望
  • 缺乏文檔

我們來談?wù)凴ails的一些缺點。我們知道的關(guān)于Ruby on Rails的***抱怨是它相對較慢。Rails是一個很大的框架,有很多很多功能。除了一些較輕便的框架之外,還有g(shù)em和應(yīng)用程序文件依賴的因素。有太多的自動化和scaffolding,以致于開發(fā)人員并沒有真正學(xué)習(xí)很多關(guān)于Rails框架如何工作的內(nèi)容。你可能了解Ruby語言,了解應(yīng)用程序的語法或結(jié)構(gòu),但對于真正了解Rails如何工作的人來說,自動化和scaffolding是非常棒的,因為有助于快速開發(fā)。另一方面,一些開發(fā)者的確需要做更多的努力才能真正理解某些事情。Rails對于大型項目,也比小型應(yīng)用程序更困難。它也有一些縮放問題。

所以另外一個缺點是Rails不像Node.js那樣受歡迎。此時,Node.js處于Web開發(fā)的前沿,而且Rails令人興奮的時代已經(jīng)逝去。我們認為,如果你正在找工作,那么我們言之鑿鑿地建議學(xué)習(xí)Node,以及可能的話還有Express。比起其他語言,有更多的公司正在招聘JS開發(fā)人員。如果是在五年前,那么Rails或Ruby必將是值得學(xué)習(xí)的前三大語言之一。但是現(xiàn)在它沒有那么受歡迎了。所以我在前面簡單地提到,核心Rails框架有一些非常好的文檔和示例,可以讓你學(xué)習(xí)簡單的scaffolding命令和數(shù)據(jù)庫遷移。這一切都很好。然而,當(dāng)你試圖學(xué)習(xí)更高級的編程,并且試圖了解特定的gems時,有時候感覺就像大海撈針一樣。

一些名氣相當(dāng)大的平臺曾經(jīng)使用過或正在使用Ruby on Rails。Twitter就是其中一個巨頭。另外,由于一些擴展問題,他們已經(jīng)把很多后端服務(wù)移到了Scala和Java上。但是由于他們使用過Rails很長一段時間,所以我非常確定他們?nèi)匀辉谄脚_的其他方面使用它,比如與Shopify的合作。此外,作為項目管理解決方案的Basecamp表示,Rails是他們項目的核心和靈魂。運行GitHub的軟件是建立在Rails上的。Soundcloud和Hulu,流行的流媒體服務(wù),都是建立在Rails上的。從一開始,Groupon和LivingSocial,SlideShare和Urban Dictionary就在他們的開發(fā)中使用Rails。

Node.js的優(yōu)點

  • 非常受歡迎。
  • 高性能。
  • 異步。
  • 非常可擴展。
  • JavaScript前端和后端。
  • 靈活的文件結(jié)構(gòu)。
  • npm和模塊。

看了Rails之后,現(xiàn)在讓我們開始看看Node.js。我們將從它的優(yōu)點開始。Node.js的一個巨大的優(yōu)勢是它非常受歡迎。它基本上是web開發(fā)中的***的***技術(shù)。市場需求非常大。極其受創(chuàng)業(yè)公司的歡迎。圍繞Node和Express框架有一個繁榮的開源社區(qū)。在npm基礎(chǔ)上有很多開發(fā)良好的模塊,并且當(dāng)談到速度和性能的時候,Node對上Rails有著絕對的優(yōu)勢。事實上,Node幾乎所向披靡。它運行在速度如閃電般的Google JavaScript引擎上。Node用于構(gòu)建幾乎感覺像桌面應(yīng)用程序一樣的實時Web應(yīng)用程序。

接下來,Node.js也是異步的。這意味著程序向服務(wù)器發(fā)送請求時,不必等待回復(fù)。它可以繼續(xù)執(zhí)行。Node運行在單個線程上,而不像其他語言一樣發(fā)送請求。這些語言需要等待,直到請求完成,然后發(fā)送下一個,再等待。所以Node.js也是非常可擴展的,在單線程中發(fā)揮了很大的作用。Node也可以和像MongoDB這樣的NoSQL數(shù)據(jù)庫一起工作,它比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫如MySQL更具可擴展性。幾乎所有我了解的大公司都轉(zhuǎn)移到了Node.js上,他們報告說生產(chǎn)力有了很大提高。

Node的另一個很棒的優(yōu)勢是它使用JavaScript,而JavaScript被廣泛用于許多Web棧。很多時候,前端的語言與后端的語言是不一樣的,但是在使用Node.js的時候并不是這樣。我們在前端和后端都可以使用JavaScript。有很多主導(dǎo)業(yè)界的客戶端框架——React,Angular,Vue.js。所以這對Node.js來說是一個巨大的優(yōu)勢。顯然,JavaScript也和非常受歡迎的JSON API也可以協(xié)同工作。

Node.js,Express或Happy.js,這些框架中的任何一個都具有非常靈活的文件結(jié)構(gòu)。它們能讓你構(gòu)建你想要的應(yīng)用程序。你可以將所有內(nèi)容都塞進應(yīng)用程序的單個JS文件。如果你想有更多傳統(tǒng)的MVC結(jié)構(gòu),那就有利有弊了。但是大多數(shù)情況下,如果你知道你在做什么,而且你是一個好的程序員,那么靈活性是一件好事。和Ruby gems一樣,Node也有它自己的包管理器,稱為npm或Node包管理器。npm和Ruby gem***的區(qū)別就是依賴關(guān)系的管理方式。使用Ruby,依賴關(guān)系是全局安裝的。所以你必須使用捆綁器,并且必須自己管理它們。 npm實際上負責(zé)你的所有模塊。它們被放入Node模塊文件夾。這些模塊也可以擁有自己的Node模塊文件夾,并具有自己的依賴關(guān)系。npm模塊似乎也有更好的文檔,至少以我的經(jīng)驗來看是這樣的。

Node.js的缺點

  • 糟透了的CPU密集型任務(wù)。
  • 不一致性。
  • 較新的技術(shù)。
  • 回調(diào)地獄。
  • 太模塊化。

好的,既然我們了解了Node.js的優(yōu)勢之后,讓我們來看看它的一些缺點。對于許多CRUD類應(yīng)用程序來說,Node是很好,但對于CPU密集型應(yīng)用程序來說,這絕對是一件非常糟糕的事情。原因是,只要執(zhí)行某些操作一些時間(例如CPU操作),它就會將所有傳入的請求排隊,因為它在單個線程上運行。像Apache這樣有更多可用線程的,將會在它們之間分配CPU時間。只有IO操作是并行的,因為它們是異步執(zhí)行的。CPU密集型任務(wù)的例子為3D渲染,視頻編碼,科學(xué)建模等等。

關(guān)于Node的另一個抱怨是它可能有點不一致。有些人覺得API保持經(jīng)常的改變。它有時不是很向后兼容。不僅如此,而且Express應(yīng)用程序的結(jié)構(gòu)通常非常自由和靈活。因此,有時它反而會使得開發(fā)者作繭自縛。

Rails是非常嚴格的,所以編寫壞代碼更困難。由于Node是異步的,所以你將會處理很多回調(diào)函數(shù),它們經(jīng)常會蜂擁而至并進入所謂的回調(diào)地獄(callback hell)。對此的解決方案有異步工具和使用promises。你也可以做一些事情來預(yù)防。我覺得就我個人而言這不是問題,但我知道一些不習(xí)慣異步編程的開發(fā)人員對回調(diào)真的很頭疼。

正如你可以看到這兩個后端選擇都有其優(yōu)點和缺點,但它們都是很棒的技術(shù)。我們應(yīng)該根據(jù)具體情況具體對待,而不是絕對地說這個比另一個更好。

責(zé)任編輯:未麗燕 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2024-03-19 08:36:19

2017-01-15 11:14:47

超融合數(shù)據(jù)中心IT基礎(chǔ)設(shè)施

2023-10-08 13:42:00

Python Web框架

2012-05-30 09:12:46

NodeJSRubyRails

2017-03-09 13:30:13

Linux游戲AMD

2012-03-07 14:32:41

Node.js

2015-12-11 13:36:17

WebAPPNodeJS

2022-12-26 14:51:48

人工智能

2016-04-18 09:33:52

nodejswebapp

2019-09-01 19:19:04

TensorFlowPyTorch深度學(xué)習(xí)

2020-03-17 15:55:12

Redis數(shù)據(jù)庫命令

2023-03-07 14:31:44

Node.jsPython應(yīng)用程序

2023-01-13 10:46:42

2012-05-16 11:53:39

虛擬化

2022-07-11 10:17:19

Swift編程語言項目

2009-01-19 16:54:50

數(shù)據(jù)挖掘CRM孤立點

2022-08-24 08:00:00

Node.isJavaScriptDeno

2013-12-13 15:21:44

Html5企業(yè)移動開發(fā)框架

2022-08-12 08:00:00

編碼語言開發(fā)工具

2016-01-26 09:58:28

云存儲云服務(wù)云安全
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久99视频 | www.99热.com | 丝袜美腿一区二区三区动态图 | 麻豆天堂 | 亚洲精视频 | 亚洲国产成人精品久久 | 亚洲免费婷婷 | 成人欧美一区二区三区视频xxx | 精品国产第一区二区三区 | 亚洲成人www | 国产精品久久久久久久 | 久久精品 | 麻豆精品国产91久久久久久 | 成人国产精品久久 | 一区二区三区视频在线观看 | 成人欧美一区二区三区视频xxx | av在线免费观看网址 | 国产大毛片 | 欧美极品一区二区 | 成人夜晚看av | 在线视频一区二区三区 | 91久久精品| 亚洲在线| 国产在线1区 | 大乳boobs巨大吃奶挤奶 | 国产精品一区二区日韩 | 在线欧美视频 | 日本五月婷婷 | 欧美国产91 | 巨大黑人极品videos精品 | 91久久精品国产91久久性色tv | 亚洲精品一区二区在线观看 | 日本亚洲欧美 | 精品一区国产 | 亚洲a视频 | 91麻豆精品国产91久久久更新资源速度超快 | 91久久精品一区二区二区 | 久草色视频 | 99视频免费| 国产亚洲精品成人av久久ww | 在线免费黄色 |