我们(我的团队)正在开始使用云托管的基于Web的应用程序。我们开始使用Scala + Play作为服务器端Web应用程序。由于我的团队中没有人知道Scala(之前的Java / Java Script / Python / C ++经验),我们所有人都在经历一个陡峭的学习曲线。在花了几周学习Scala的基础知识之后,我们开始以play-scala-starter示例作为基础。团队成员花了几天的时间来创建访问mysql DB的原型GET + POST API处理程序。 考虑到在Scala上花费了大量精力和时间,为了进行比较,团队成员在半天(4-5小时)内使用node.js构建了相同的原型功能。这对我们所有人来说都是一个启示。为了补充这一点,互联网上充满了企业级应用程序中使用的node.js成功案例(请注意,对于前端,无论如何我们将使用基于JS的框架,例如Angular,React等)。 现在作为一个团队,我们正在讨论下一个方法 - play + scala或node.js.我们不希望基于短期收益做出决定,也不希望避免在加速时做出初步斗争。这就是为什么在这里发布这个问题以获得真实世界的见解。如果这是一个错误的地方提出这样的问题,那么请建议适当的。很可能这个问题将被关闭,因为它是“讨论”类型。 注意:这篇文章不是批评任何方法。所以请提前道歉。
答案 0 :(得分:2)
当您“快速了解Scala并构建原型”时,您应该期待这一点。 Scala是一项长期投资。如果你想获得它的类型系统,表现力和函数式编程概念的所有好处,它将需要几周的时间(我已经做了差不多三年了,而且我仍在学习所有的时间)。 / p>
我在一个成功的初创公司工作,最初的后端是用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中是个业余爱好者,但一切都有效”。但与Haskell相比,我觉得Scala有更多的牵引力。当你google与NodeJS相关的内容然后对Scala相同时,我理解你的担忧,但相信我,一旦你开始,你会发现Scala有一个很大的社区,很多关于各种博客/论坛/ stackoverflow的材料和一个{ {3}}
就NodeJS本身而言,您会注意到与Play有很多相似之处,两者都是异步事件驱动的框架。但是谈到JS作为一种语言,如果你把时间花在Scala上以便熟练掌握它,那么你会问自己,如果没有它的某些方面,你怎么能生活,最明显的是它的类型系统(TypeScript糟透了)。 / p>
我知道我是主观的,但这是一个基于意见的问题。它应该(并且可能会)被标记为过于宽泛/非建设性/偏离主题/不明确,但我决定鼓励你们做出一个很好的长期决定。找一些额外的时间,通过huge ecosystem,注册good introductory book(昨天开始),下个月这个时候你会对它感到更加自信。当然,如果你明天需要一个原型,一个月是很长一段时间,但如果时机确实非常重要,那么我总是建议你选择你最熟悉的技术,并试着做一个更轻松的项目。否则你不仅会感到沮丧,而且还会产生一种糟糕的产品。
答案 1 :(得分:0)
一般来说,如果您是某种语言的新手:期待时间。因此,在Node.js中创建原型的速度要快得多,我并不感到惊讶。
我的建议:在这种情况下坚持使用Java。如果你来自C ++ / Java / JS,它会更容易。
从技术角度来看,我不推荐使用nodejs:它有可伸缩性问题,Play是基于Akka构建的,所以你可以免费获得所有Akka好东西。用另一种语言做到这一点很难。如:真的很难。
简而言之:从Play Java开始,稍后再转到Scala。