2017-06-06 65 views
1

我們(我的團隊)開始使用雲託管的基於Web的應用程序。我們開始使用Scala + Play作爲服務器端Web應用程序。由於沒有人知道我的團隊中的Scala(以前的Java/Java Script/Python/C++經驗),我們所有人都在經歷一個陡峭的學習曲線。花了幾周的時間學習Scala的基礎知識之後,我們以play-scala-starter爲例作爲基礎。團隊成員花了幾天時間創建訪問mysql數據庫的原型GET + POST API處理程序。 考慮到Scala的重大努力和花費的時間,爲了比較,一個團隊成員在半天(4-5小時)內使用node.js構建了相同的原型功能。這是我們所有人的啓示。爲了補充說明,互聯網充滿了企業級應用程序中使用的node.js成功案例(請注意,無論如何,我們將使用基於JS的框架,例如Angular,React等)。 現在作爲一個團隊,我們正在討論下一個方法 - play + scala或node.js.我們不希望根據短期收益做出決定,或者避免在加速階段進行最初的鬥爭。這就是爲什麼在這裏發佈這個問題來獲得真實世界的見解。如果這是一個錯誤的地方提出這樣的問題,那麼請建議適當的問題。由於它是'討論'類型,很可能這個問題將被關閉。 注意:這篇文章不是批評任何方法。所以提前道歉。對Play + Scala與JavaScript的使用缺乏實際見解

+1

我認爲比原型設計速度更重要的一個指標是重構 - 大代碼庫速度,這是一個好的類型系統對於 – nafg

+0

至關重要https://developers.redhat.com/blog/2015/04/22/scala-vs -node -js-as-a-restful-backend-server/ – sjrd

回答

2

這是您在「快速瀏覽Scala並構建原型」時應該期待的內容。斯卡拉是一項長期投資。如果你想獲得它的類型系統,表現力和函數式編程概念的所有好處,幾周後我會花費更多的時間(我已經做了近三年,現在仍然在學習)。

我工作在一個成功的初創公司,它的後端是用NodeJS編寫的,因爲它和你描述的一樣,但現在他們正在Scala中做所有的新東西(不是Play,而是更多的面向FP框架Finch;但是我在前兩個工作中一直在使用Play,它絕對不是最普遍的Scala Web框架,那麼絕對在頂端附近)。所以不要擔心,它在生產中非常重要。例如,我的favourite chess portal完全在Play堆棧中完成。還有很多其他的three years ago,到目前爲止這個列表肯定要大得多(當然,這些只是最受歡迎的列表;還要注意,這是專門聲明使用Play框架的人的列表,因爲Scala列表一般會包括許多其他巨頭,如Twitter,Coursera,Soundcloud,Spotify,Foursquare,Netflix,AirBnB,Quora,Tumblr,eBay等)。

當做得對,函數式編程(哦,是順便說一句,我甚至沒有考慮OOP風格的Scala)爲您提供了很多安全性和安全性。你知道那句老話 - 「我曾經覺得自己像JS的專家,但沒有任何工作,現在我覺得自己像一個哈斯克爾的業餘愛好者,但一切正常。」但是與Haskell相比,我覺得Scala擁有更多的吸引力。我理解你的擔心,當你谷歌的東西與NodeJS相關,然後相同的斯卡拉,但相信我,一旦你開始你會意識到,斯卡拉有一個大的社區,各種博客/論壇/ stackoverflow和huge ecosystem

就NodeJS本身而言,您會發現與Play有很多相似之處,它們都是異步事件驅動的框架。但是談論JS作爲一種語言,如果你花時間在Scala上精通它,你會問自己,你怎麼可能沒有它的某些方面,特別是它的類型系統(TypeScript吸引btw)。

我知道我是主觀的,但它是一個基於意見的問題。它應該(也可能會)被標記爲過於寬泛/不具有建設性/偏離主題/不清楚,但我決定鼓勵你們做出長期的良好決定。找一些額外的時間,通過good introductory book,報名參加Coursera course(昨天開始),下個月的這個時候你會對此感覺更加自信。當然,如果明天你需要一個原型,一個月是很長的一段時間,但如果時間真的很關鍵,那麼我總是會建議採用你最熟悉的技術,然後試驗一個更輕鬆的項目。否則,你不僅會感到沮喪,而且會產生一個糟糕的產品。

+0

slouc:你解決了我的主要問題。我同意Scala在短期原型設計中不需要考慮。是的,像往常一樣,今天要面對壓力。然而,我們作爲一個團隊決定與Scala合作,因爲它提供了與Node相比的長期優勢。我們故意避免使用Java,因爲太多的鍋爐代碼和可伸縮性限制(Java8可能會解決這些問題中的一些)。主要有兩件事讓我們放慢了腳步: 1.斯卡拉語言本身的浩大 2.大多數時候,Google並沒有像Node或Java那樣返回建議。 感謝細節。 – NKM

+0

@NKM斯卡拉確實是一個相當廣泛的語言。我列出的資源(書籍和課程)由Scala自己創建,他們會帶你走上最有意義的道路,使學習曲線儘可能愉快。如果您通過這些資源投入以下六週的時間來學習Scala,那麼您將會處於頂峯。一旦你完成了,你將完全有能力在Play中編寫高質量的網絡服務。你會發現越來越先進的概念,但只是一次一個,這將是一個有趣和有益的過程。 – slouc

+0

除了這個堆棧溢出論壇,gitter聊天室和scala用戶論壇(scala-lang)是否還有其他我不知道的社區論壇? – NKM

0

一般來說,如果您是新手語言:預計時間。所以我並不感到奇怪,在Node.js中做原型的速度更快。

我的建議:在這種情況下堅持Java。如果你來自C++/Java/JS,這會更容易。

從技術角度來看,我不會推薦nodejs:它有可擴展性問題,並且Play基於Akka構建,因此您可以免費獲得所有Akka的好東西。以另一種語言獲得這種權利是很困難的。如:真的很難。

總之:從Play Java開始,稍後再轉到Scala。

+0

除了上面在我的評論中提到的原因,我們會堅持Java。 – NKM