【发布时间】:2010-09-24 11:56:30
【问题描述】:
我正在研究 GWT。看起来不错,但我们的软件必须在没有 JS 要求的情况下工作。有可能吗?
【问题讨论】:
标签: javascript web-applications gwt graceful-degradation noscript
我正在研究 GWT。看起来不错,但我们的软件必须在没有 JS 要求的情况下工作。有可能吗?
【问题讨论】:
标签: javascript web-applications gwt graceful-degradation noscript
在设计我的网站时,我自己也在研究这个问题。 GWT 并不比仅仅编写 Javascript 文件更好,因为它们的语法几乎相同。当您共享客户端和服务器库时,真正的好处就来了。希望您在过去两年中解决了这个问题,但无论如何,这里有几个示例可能对您有用。
创建 Gmail:使用 GWT,您可以在一个共享包中创建一个 EmailFormatter,该包执行电子邮件列表标记,这样您的服务器就不必这样做了。然后,您可以通过在服务器端使用相同的 EmailFormatter 类来添加对旧版浏览器(“旧版本”)的支持。
表单验证:虽然从安全角度来看验证用户输入服务器端是绝对必要的,但对于大多数用户来说,在提交表单之前让 Javascript 检查表单更方便。您可以使用与 GWT 相同的 Java 代码来执行此操作。
【讨论】:
您可以通过创建一个“足够好”的 html 结构(带有表单帖子、链接菜单等)来优雅地降级,然后将 GWT 附加到该结构的每个部分,增强其行为。例如,使 HTML 下拉列表动态化,用打开灯箱的组件替换指向另一个页面的链接,或者用 XML http 请求替换指向另一个页面的链接以执行相同的操作(例如投票)。
我已经为客户做过很多次了。
这与大多数 GWT 的开发方式相反,但它可以工作。
【讨论】:
不,不是。 GWT 提供了一个专门为在客户端而不是服务器上运行而设计的窗口工具包。降级(例如非 javascript)代码需要向浏览器提供完整的 HTML,而 GWT 根本不这样做。它将您的 java 代码编译为一个 javascript 文件,该文件传递给客户端,并通过客户端上的 DOM 操作构建 UI。然后有一些代码可以与服务器对话,一些是隐含的,一些是你自己编写的。此模型不适合优雅地降级。
稍微优雅地降级的唯一方法是提供第二个非 JavaScript UI 或使用另一个不在客户端呈现前端但提供 HTML 的工具包。对不起。
【讨论】: