举起来,玩!或者BlueEyes(带有一堆Javascript框架)
Lift, Play! or BlueEyes (with a bunch of Javascript Frameworks)
我发现自己陷入了一个小难题。我正在构建一个新的、现代的、基于web的应用程序,我不仅要选择一种技术,还要选择一种体系结构。我认为可以公平地说,现在是一个艰难的选择,因为我们比5年前有更多的选择。
首先,我决定将Scala作为服务器端语言。我有我的理由,这不是一个Scala与XYZ的帖子——已经做出了选择。我还意识到,我们在网络上,在云端,所以我甚至不会试图摆脱Javascript。也许我会使用CoffeeScript,但我会编写浏览器托管的代码。
现在,假设Scala,大多数人可能会跳到Play!或Lift。可能玩!考虑到它得到了Typesafe的支持,但我想我还有另一个更重要的问题需要首先回答。体系结构是什么?如果我想要一个非常丰富的客户端,我真的需要一个简单的无状态服务层吗?因为我们无论如何都会有大量的Javascript?我不确定它会是一个单页的网络应用程序,但像BlueEyes这样的应用程序可能是正确的选择吗?举起来玩!他们承担的责任要大得多。他们生成HTML,而对于这些框架,浏览器是相当愚蠢的。路由、验证、Ajax和Comet支持等都是服务器端关注的问题。因为浏览器现在的功能更强大了,所以通常通过从服务器生成和注入Javascript来实现丰富的交互式功能。
我的问题归根结底就是这个。我会选择传统的电梯/游乐设施吗!服务器同时承担客户端和服务器责任的框架,还是使用富客户端+REST风格的服务层,在该服务层中客户端在应用程序中扮演更重要的角色?客户端处理路由、验证、绑定等的架构。我看到了KnockOut.js、Sammy.js、Sproutcore、Backbone.js等框架。
如果我选择播放!,我是不是放弃了一些丰富的UI?如果我想为集成/mashup/移动目的提供服务API,情况会怎样?怎么玩!帮我一下?显然蓝眼睛在这里打得很好。我想我无论如何都需要一个服务层。
如果我选择BlueEyes,我的客户端代码是什么样子的?我需要多少基于Javascript的框架才能满足我的需求?我仍然希望我的大部分业务逻辑都在服务层中,但路由、绑定。。所有这些UI内容都将是客户端关心的问题。
我不确定答案是对是错,但我认为这个社区可能会给我指明正确的方向。
我也在我的博客上发布了这个http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228
如果您只想在后端使用REST API,那么Lift,Play!否则布鲁耶会好好工作的。但我只想指出使用Lift的优点。
- Lift试图同时做前端和后端,这不是真的。我们支持只使用REST的Lift,这是对正确项目的鼓励
- 虽然Lift提供了jQuery和blueprint,您可以使用任何javascript库和css框架,但目前邮件列表上有很多人展示了他们如何使用Lift的twitter boostrap。请参阅此帮助集成引导程序的提升模块
- 使用Lift,您可以开始无状态,如果在这一过程中您发现自己的需求发生了变化,则可以进入无状态状态。您甚至可以在同一个应用程序上混合和匹配它们
- 想要一些外观现代的用户界面吗?Lift的彗星支撑即使不是最好的,也是其中之一。使用非常简单,在许多浏览器/工作负载上经过验证和测试。我写了几篇文章,展示了Lift对彗星的支持
- 如果您决定同时对前端和后端使用Lift,您将免费获得一个默认安全的应用程序,无需担心xss、xsrf或许多前10个OWASP安全漏洞
- 需要商业支持,这里的列表越来越多
- 需要培训吗?伦敦即将举办基础培训,Lift的创始人还提供其他培训课程
- 有几本关于电梯的书。电梯在行动,简单的电梯和探索电梯
- 有一个非常活跃的社区随时准备提供帮助
- 谁使用Lift?仅举几个例子:Foursquare、OpenStudy、英国卫报、StackMob等等
好吧,我应该到此为止,但简而言之,Lift是一个很棒的框架,它有很多东西可以提供,你需要多少就拿多少。
Play 2.0 Beta包含一个正是您想要的示例应用程序(ZenContacts)。它的服务器端只是一堆restful接口,而客户端则利用coffeescript等来构建一个丰富的用户界面。
据我所知,两者都玩!Lift基本上可以作为"后端"使用,您可以使用HTML5+CSS+JS作为"前端";它们不一定会限制你创造你想要的前端的能力,所以因此拒绝它们是愚蠢的。请注意像knockout.js这样的东西宣传它们"可以与任何web框架一起使用"。然而,它们可能确实比你需要的更"重量级"。
我以前从未听说过BlueEyes,但它似乎是针对一种特定的用例。如果这符合你的要求,那么它可能是解决你问题的最简单的方法。
但如果这是你计划实际放在网上的东西,"路由、验证、绑定等"实际上需要由后端处理;我简直无法想象在客户端浏览器中运行的代码会(安全地)处理这些事情。此外,如果您的用户选择禁用JavaScript,您的网站将完全不可用。
如果我选择播放!,我是不是放弃了一些丰富的UI?
你所说的富用户界面到底是什么意思?前端有更多javascript?
如果你认为HTML5+CSS3+jQuery是一个丰富的UI,那么它们可以很好地与任何"后端"(Lift/Play)配合使用。
您可能需要考虑的另一件事是框架的成熟度。就像你提到的,Play 2.0原生地支持Scala,支持Typesafe,并且正在迅速被采用。此外,您可以轻松地公开RESTful服务,然后在前端消费(这是您的需求之一)。
向HTML5+CSS3+jQuery+Play 2.0倾斜:)
只是我的想法。。
体系结构是什么?
玩!强烈鼓励您的服务器使用MVC架构,以标准模式创建包:
app/
controllers/
Application.scala
views/
Application/
index.scala.html
models/
public/
images/
stylesheets/
javascripts/
这使得遵循体系结构比破坏体系结构更容易
我既不能代表Lift也不能代表BlueEyes,但恐怕他们都不鼓励架构。
最终看一看http://twitter.github.com/finagle在下定决心之前。Finagle可以处理大部分后端事务。它是围绕着一个非常灵活的体系结构设计的,该体系结构巧妙地使用过滤器来分离关注点。
我看过apache点击、wicket、一点Lift(感觉有点像wicket),然后玩1.2.4。到目前为止玩得还不错。非常漂亮的网络开发方法。继续努力,玩!团队
- 如何用JavaScript或jQuery替换一堆标签
- JavaScript-传单,添加了一堆标记
- 如何使用Gulp编译并移动到另一个文件夹一堆sass文件
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 使用一堆 setTimeouts 还是一个 setInterval 来刷新一堆对象更有效
- 用 JavaScript 加一堆浮点数,总和上的误差界限是多少
- 如何防止/延迟一堆 Bootstrap 模块立即加载其内容以防止站点加载时间缓慢
- 将某些内容与一堆斜杠匹配的正确方法
- 使用 setInterval 运行一堆 ajax 好吗?超过 5 个 AJAX 正在运行
- 可以调用 document.querySelector( ) 一堆
- 在超大的jquery中,如何使用java动态传递一堆图像
- 在木偶布局中维护一堆木偶项目视图
- 从数组中按顺序执行一堆 WinJS 承诺
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 在提交之前将一堆复选框输入附加到表单,然后隐藏它们
- 如何按顺序调用一堆包含 ajax 的函数
- 不断出现逻辑错误,将我的数组输出减少到一堆零
- 如何从一堆视图中删除一个类
- 从一堆随机数中确定最大值
- 举起来,玩!或者BlueEyes(带有一堆Javascript框架)