缺乏对使用Play + Scala与JavaScript的实用见解

我们(我的团队)开始使用云托pipe的基于Web的应用程序。 我们开始使用Scala + Play作为服务器端的Web应用程序。 由于没有人知道我的团队中的Scala(以前的Java / Java Script / Python / C ++经验),我们所有人都在经历一个陡峭的学习曲线。 花了几周的时间学习Scala的基础知识之后,我们以玩Scala-starter为例来开始。 一个团队成员花了几天的时间创build一个访问mysql数据库的原型GET + POST API处理程序。 考虑到Scala的重大努力和花费的时间,为了比较,一个团队成员在半天(4-5小时)内使用node.js构build了相同的原型function。 这是我们所有人的启示。 为了补充说明,互联网充斥着在企业级应用程序中使用的node.js成功案例(请注意,无论如何,我们将使用基于JS的框架,例如Angular,React等)。 现在作为一个团队,我们正在讨论下一个方法 – play + scala或node.js. 我们不想根据短期收益来做出决定,也不希望在加速时进行最初的斗争。 这就是为什么在这里发布这个问题来获得真实世界的见解。 如果这是一个错误的地方提出这样的问题,那么请build议适当的问题。 由于是“讨论”types,这个问题很可能会被封闭。 注意:这篇文章不是批评任何方法。 所以提前道歉。

当您“快速查看Scala并构build原型”时,这是您应该期待的。 斯卡拉是一个长期的投资。 如果你想从types系统,performance力和函数式编程的概念中获得所有的好处,那么几个星期之后(我已经做了将近三年了,而且还在不断学习)。

我在一个成功的创业公司工作,这个创业公司的后端是用NodeJS编写的,因为和你描述的一样,所以现在他们正在Scala中做所有的新东西(不是Play,而是一个更加面向FP的框架Finch ;我在之前的两个工作中一直使用Play,当然,如果不是最普遍的Scala Web框架,那么绝对是在顶端附近)。 所以不要担心,它在生产中非常重要。 例如,我最喜欢的国际象棋门户完全在Play堆栈中完成。 三年前还有很多其他的,目前这个列表肯定要大得多(当然,这些只是最受欢迎的列表;还要注意,这是专门声明使用Play框架的列表,因为列表斯卡拉一般会包括许多其他巨头,如Twitter,Coursera,Soundcloud,Spotify,Foursquare,Netflix,AirBnB,Quora,Tumblr,eBay等)。

如果做得对,函数式编程(哦,是顺便说一句,我甚至没有考虑OOP风格的Scala)给了你很多的安全性和安全性。 你知道那句古老的话 – “我曾经觉得自己像一个JS的专家,没有任何工作,现在我觉得自己像一个哈斯克尔的业余爱好者,但一切正常。” 但是和Haskell相比,我觉得Scala更具吸引力。 我了解你的烦恼,当你谷歌的东西与NodeJS相关,然后相同的斯卡拉,但相信我,一旦你开始你会发现,斯卡拉有一个大的社区,各种博客/论坛/ stackoverflow和巨大的材料生态系统

就NodeJS本身而言,您会注意到与Play有许多相似之处,都是asynchronous事件驱动的框架。 但是谈论JS作为一种语言,如果你花时间在Scala上精通它,你会问自己,你怎么能没有生活的某些方面,最显着的是它的types系统(TypeScript吸吮顺便说一句)。

我知道我是主观的,但这是一个基于意见的问题。 它应该(也可能会)被标记为过于宽泛/不具有build设性/偏离主题/不清楚,但我决定鼓励你们做出一个好的长期决定。 找一些额外的时间,通过一本好的介绍性的书籍 ,参加Coursera课程 (从昨天开始),下个月的这个时候,你会对此感觉更加自信。 当然,如果明天你需要一个原型,一个月是很长的时间,但是如果时间真的很重要的话,那么我总是build议使用你最熟悉的技术,然后试验一个更轻松的项目。 否则,你不仅会感到沮丧,而且会产生一个糟糕的产品。

一般来说,如果你是一个新的语言:预计时间。 所以我并不感到奇怪的是,在Node.js中做原型的速度更快。

我的build议:在这种情况下坚持Java。 如果你来自C ++ / Java / JS,会更容易。

我不会从技术的angular度推荐nodejs:它有可扩展性的问题,Play是在Akka上构build的,所以你可以免费获得所有Akka的好东西。 用另一种语言来获得这个权利是很难的。 如:真的很难。

简而言之:从Play Java开始,稍后再转到Scala。