【问题标题】:What are my options for building a rich web application?构建富 Web 应用程序有哪些选择?
【发布时间】:2011-04-15 14:58:41
【问题描述】:

我正在开发一个客户端 Java 应用程序,我想为其创建一个基于 Web 的用户界面(将从本地应用程序提供给浏览器)。冒着过于简单化的风险,它是一个微博工具,将支持类似于 Twitter 和 Facebook 的功能。它是开源的,你可以阅读更多on our wiki

这个应用程序非常易于使用很重要,而且我还希望它相对于现代 Web 应用程序(例如 Chrome web store 上的示例)看起来不错。由于我不是网页设计师,我希望使用能够为我提供“开箱即用”的有吸引力的 UI 的工具。哦,我需要将可分发文件保持在合理的小范围内(所以我使用的任何东西都需要合理的轻量级。

到目前为止,我已经研究了 Sproutcore 和 GWT。

Sproutcore 应用程序确实具有我希望的外观,但我对 JavaScript 不太熟悉,经过一些实验后,我并不完全清楚如何实现我认为我认为的一些更复杂的功能我需要。

作为 Java,GWT 更适合我的舒适区,但是我在正确设置开发环境方面度过了一段地狱般的时光。似乎 GWT 想要决定我的应用程序的结构,但由于用户界面只是其中的一小部分,我不愿意围绕 GWT 构建整个应用程序。

我一直在考虑的其他事情是使用 CoffeeScript(与 JavaScript 相比,这似乎更适合他,他他他他他,并且有 Maven 构建器),也许与 JQuery-UI 一起使用。

我还应该考虑哪些其他选择?

【问题讨论】:

    标签: java javascript jquery-ui gwt sproutcore


    【解决方案1】:

    推荐两个大的javascript框架SenchaCappuccino

    它们具有广泛的 UI 工具包,开箱即用。后者内置了 MVC 框架,前者内置了通用 JavaScript 库。强烈推荐两者。

    同样推荐 jQuery UI 是一个合理的工具包。我个人会因为 Sencha 丰富的 UI 工具包和像 Backbone 这样的轻量级 MVC 框架而将其结合起来。恐怕这确实需要好好学习 JavaScript。

    您也可以改为主要从服务器驱动 JavaScript UI 工具包并跳过客户端 MVC。因为 sencha 应该作为 UI 工具包出现,但如果你想要有意义的功能,你将需要更多的结构。我还推荐RequireJS 用于模块化文件管理。

    【讨论】:

      【解决方案2】:

      看看Vaadin,它基于 GWT,但使用更简单。我用了 2 年了,我也不是设计师。

      【讨论】:

      • 如果您不打算在客户端 JavaScript 中手动与 UI 交互,那么这些类型的服务器端框架很好。如果您必须手动与自动生成的 HTML 交互,它将很快成为噩梦
      • Raynos,你能举个具体的例子吗?为什么我需要使用 Vaadin 手动与客户端大小的 javascript 交互?
      【解决方案3】:

      看看jQuery & jQuery UI(如果您希望部署到手持设备,请查看jQuery Modile

      此外,由于您提到您不是设计师,您可能希望以 MVVM 模式实现前端,以将 UI 与应用程序的业务逻辑分开。 Knockout 是处理减速数据绑定的好方法

      【讨论】:

        【解决方案4】:

        我不喜欢编写普通的 JavaScript,所以我会告诉你一些关于基于 Java 的框架的知识。最近,我选择了 Google Web Toolkit

        优点:

        • 材料丰富
        • Eclipse + Google 插件
        • 非常直观的 API
        • 第三方库
        • 精美的小部件 + 优化的 JavaScript
        • 很多泛型
        • 非常活跃的社区
        • 很棒的异步回调

        缺点:

        • 调试很慢,迟早会让你发疯的
        • 这么年轻的框架有很多不推荐使用的代码

        百感交集:

        • 您不必编写声明性 UI(您可以进行类似 Swing 的开发),但是您的代码会变得越来越大且难以维护,因此您很可能最终会学习一些声明性 UI,例如 UI Binder李>
        • GWT 的可视化设计器在某种程度上很好,但是非常不稳定(eclipse):(

        一些注意事项:

        使用 Vaadin 进行一些原型设计。尝试一些调试。然后在类似大小的项目上尝试 GWT 和调试。将调试视为非常重要的决策因素,因为 GWT 调试对我来说是最令人沮丧的事情。

        考虑 JSF + 一些不错的 JSF 丰富的组件框架,如 RichFaces、IceFaces、PrimeFaces 等(但如果你真的关心,你的应用程序将不再是“轻”和“小”)。确保完全适应环境(IDE + 插件),那里没有什么比 JSF 更好的了(如果可以选择完整的 Java EE,我今天会选择 RichFaces + Seam)。

        【讨论】:

        • 总的来说,我喜欢 GWT,但是: 1. 文档的某些部分很糟糕 2. 对于小型应用程序,完全夸大其词 3. 如果你不使用 UIBinder 的话,很容易编写意大利面条式代码 4. 标准小部件图书馆可能会更好
        • @Helper 方法:今天,我可能不会再选择 GWT,因为要调试。可能仅适用于一些非常轻量且快速完成的前端,或者仅适用于带有异步调用的后端。
        【解决方案5】:

        如果你不想学习 javascript,我推荐你使用 Sencha-GWT (GXT) 进行 GWT,你可以用 java 语言开发你所有的应用程序,也可以用 java 调试你的代码。

        使用这种技术创建网络应用程序非常容易,并且提供了几乎所有 javascript 版本中可用的功能。

        您还可以将它与 hibernate 和 giled 混合使用以持久化您的数据,而 giled 可以帮助您序列化 hibernate 对象。

        【讨论】:

          【解决方案6】:

          我一直在 SproutCore 中为前端和 Java 后端编写应用程序。在我看来,这非常有效。

          如果请求是 XHR 或普通请求/响应,后端可以不再担心客户端的 HTML 和 JavaScript 内容。我可以使用普通的旧 Java Servlet 实现后端,并且只担心在客户端和服务器之间传递的数据(大部分是 JSON)。

          客户端变得快速且响应迅速,并且 SproutCore 拥有大量可以混合搭配的组件。

          换句话说,使用 SproutCore(以及 Cappuccino 和其他全面的 MVC JavaScript 框架),您可以让您的客户端做它最擅长的事情:渲染和显示 HTML、CSS 和 JavaScript,同时让您的服务器担心它做得最好:检索、存储和更新数据。如果您有兴趣,该项目的源代码可通过 GPLv3 许可证获得:https://github.com/joachimhs/EurekaJ

          我在这里写了一篇关于服务器端 MVC 和客户端 MVC 之间不同方法的文章:http://haagen.name/2011/05/24/The_RIA_MVC_Model.html

          此外,SproutCore 附带 MIT 许可证,因此可以在没有 (m) 任何限制的情况下使用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-19
            • 2012-10-10
            • 2011-03-31
            相关资源
            最近更新 更多