【发布时间】:2013-09-18 09:23:02
【问题描述】:
我尝试在playframework + scala + Angular JS 上编写应用程序。
目的是创建一个在浏览器中关闭或打开 JavaScript 时都能正常工作的 Web 应用程序。这是编写公共网站时的常见要求(这对人们和将其索引的谷歌应该是有益的)
所以我最终得到了 ~50% 用 JavaScript 编写的代码,有两 (2) 个名为 "controller" 的文件夹 - 一个用于 Scala 代码,一个用于JS 代码(因为AngularJS 也使用控制器概念)。
另外,由于JS 代码应该使用Ajax 调用,我必须创建另一个 scala-controller,它返回json,但不返回html 返回客户的请求.而且..这都是我不喜欢的。这似乎太费劲了。
在playframework 模板方面,我应该考虑如何将Scala 与JavaScript 结合起来,将参数从一种语言传递到另一种语言。使用一些技巧,例如在处理 JS 时显示 that,在应该关闭时显示 that。
这一切都让我的模板难以理解,而且有一天,当我拥有庞大的代码库时,我可能会想出一个解决方案来复制我的模板(js 模板 + scala 模板) -在JS 关闭/打开时使用正确的模板。那么 JS 代码的数量可能会上升到 60%。。
然后我似乎要复制所有内容,例如拥有两个不同的应用程序 - Google 和 人。常见的(仅)是我的数据库中的数据本身,我不必复制数据。但是..我们可能对数据的格式有不同的问题(并且很可能是基于 json 的 [因为我不会浪费处理器时间来进行表对象转换],但不是基于表的 - NoSQL .. 然后再次,我们像 DB 一样来到 JS - 像 MongoDB),JS 非常适合 Json,本机。
那么问题来了,为什么不将 100% 的 JS 用于 简单 事情,例如:request-response、形成页面、布局。服务器端 JS 控制器可以形成我的模板 - 然后我不需要从一种语言切换到另一种语言,并且在这个意义上更加高效。
问题:
你有什么建议吗?关于这个的最佳实践?我不是那种想最终使用NodeJS 来使用JavaScript 作为所有事物的一种语言——用于服务器和客户端的人。但让我们谈谈生产力和业务需求。
有一个 AnjularJS 控制器的例子(不是我的),我要写多少 JS: https://github.com/tastejs/todomvc/tree/gh-pages/architecture-examples/angularjs/js
想象一下,我必须同时保留 PlayFramework 控制器 - 对于 HTML 和 AJAX 调用,将 scala/playframework 模板中的内容与 JavaScript 混合。
【问题讨论】:
-
AngularJS 是一个 RIA。您的问题与 flex 前端相同。我认为的第一个问题是:我需要什么?它是 RIA 吗?
-
这篇文章真的让我很困惑。如果你害怕混淆概念,那就不要。不要使用 Play! 的模板引擎。使用播放!只是为了服务资产和 RESTful 端点。使用 Angular 在 JS 中构建您的 MVC 应用程序。
-
我只是相信 Play 可以提供的解决方案(最终)。这更像是一个信息而不是一个问题。
标签: javascript ajax scala angularjs playframework-2.0