javascript - 举起,玩耍!或 BlueEyes(带有一堆 Javascript 框架)

标签 javascript scala architecture playframework lift

我发现自己陷入了一个难题。我正在构建一个新的、现代的、基于网络的应用程序,我不仅必须选择一种技术,还必须选择一种架构。我认为可以公平地说,现在这是一个艰难的选择,因为我们比 5 年前有更多的选择。

首先,我决定将 Scala 作为服务器端语言。我有我的理由,这不是 Scala 与 XYZ 的博文——选择已经做出。我也已经接受了这样一个事实:我们在网络上、在云端,所以我什至不会尝试摆脱 Javascript。也许我会使用 CoffeeScript,但我将编写浏览器托管的代码。

现在,假设使用 Scala,大多数人可能会跳到 Play!Lift 。大概是玩吧!鉴于它是 endorsement from Typesafe ,但我认为我还有另一个更重要的问题需要首先回答。 架构是什么?如果我想要一个非常丰富的客户端,那么基于我们将拥有大量 Javascript 的事实,我真的需要的不仅仅是一个简单的无状态服务层吗?我不确定它会是一个单页网络应用程序,但类似于 BlueEyes可能是正确的选择?举起并玩耍!重量级更大,因为他们承担更多责任。它们生成 HTML,对于这些框架来说,浏览器是相当愚蠢的。诸如路由、验证、Ajax 和 Comet 支持之类的事情都是服务器端的问题。由于当今的浏览器功能更加强大,因此通常通过从服务器生成和注入(inject) Javascript 来实现丰富的交互式功能。

我的问题归结为这一点。我是否选择传统的 Lift/Play!服务器承担客户端和服务器责任的框架,还是采用富客户端 + REST 风格的服务层,其中客户端在应用程序中扮演更重要的 Angular 色?客户端处理路由、验证、绑定(bind)等的架构。我看到像 KnockOut.js 这样的框架, Sammy.js , Sproutcore , Backbone.js ,...我不会将它们全部列出,但足以说明它们都从客户端的 Angular 呈现了其中一些框架功能。

如果我选择 Play!,我是否会放弃一些丰富的 UI?如果我想提供服务 API 用于集成/混搭/移动目的,该怎么办?怎么玩啊!帮我这里吗?显然 BlueEyes 在这里表现得很好。我认为无论如何我都需要一个服务层。

如果我选择 BlueEyes,我的客户端代码是什么样的?我需要多少个基于 Javascript 的框架才能满足我的需求?我仍然希望大部分业务逻辑都在我的服务层中,但是路由、绑定(bind)......所有 UI 内容都将是客户端关心的问题。

我不确定答案是正确还是错误,但我认为这个社区可能会为我指明正确的方向。

我还将此内容发布到我的博客 http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228

最佳答案

如果您想要的只是后端的 REST API,那么 Lift,Play!或者 Blueye 就可以了。但我只想指出使用 Lift 的优点。

  1. Lift 试图强制要求前端和后端都做,这是不正确的。我们支持 Lift 的仅 REST 使用,并鼓励正确的项目。
  2. 虽然 Lift 附带 jQuery 和蓝图,但您可以使用任何 javascript 库和 css 框架,目前邮件列表上有很多人展示他们如何将 twitter boostrap 与 Lift 结合使用。看这个Lift module这有助于集成 Bootstrap。
  3. 使用 Lift,您可以开始无状态,如果在此过程中您发现需求发生变化,则可以进入有状态。您甚至可以在同一个应用程序中混合搭配它们。
  4. 想要一些现代外观的用户界面吗? Lift 的 cometd 支持即使不是最好的,也是其中之一。使用非常简单,在许多浏览器/工作负载上经过验证和测试。我写过several posts展示 Lift 的 cometd 支持。
  5. 如果您决定在前端和后端都使用 Lift,您将免费获得一个默认 protected 应用程序,无需担心 xss、xsrf 或许多 10 大 OWASP 安全漏洞。<
  6. 需要商业支持,这个列表还在不断增加 here
  7. 需要培训吗?有一个Basic training Lift 的创始人还将在伦敦举办其他培训类(class)。
  8. 有几本关于 Lift 的书籍可供引用。 Lift in Action , Simply LiftExploring Lift
  9. 有一个非常活跃的community准备好提供帮助。
  10. 谁使用 Lift?仅举几例:Foursquare , OpenStudy , The Guardian UK , StackMob还有更多。

好吧,我应该到这里为止,但简而言之,Lift 是一个很棒的框架,可以提供很多功能,您可以根据需要使用尽可能多或更少的内容。

关于javascript - 举起,玩耍!或 BlueEyes(带有一堆 Javascript 框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9219255/

相关文章:

javascript - 使用 jquery/JS/CSS 如何将单词 append 到句子中以便句子逐字向上推

java - 更改列表中元素的位置

scala - ClassNotFoundException Spark-提交 scala

scala - 如何将带星号的参数传递给下一个方法?

c# - 3 层架构 v. 3 服务器架构

javascript - 需要有关基本 HTML 和 JavaScript 项目的帮助

javascript - 为什么我的 Jasmine 规范是 'No specs found'

android - 如何从手机通讯录中查找注册用户

android - 我们可以在服务本身中做 Web API 服务 + 多语言成功/错误消息吗?

javascript - lodash 中的对象逆变器不会丢失 key