【问题标题】:Issues in Ajax based applications基于 Ajax 的应用程序中的问题
【发布时间】:2011-02-15 10:18:22
【问题描述】:

我对开发基于 Ajax 的应用程序非常感兴趣。也就是说,通过 XMLHttpRequest 加载应用程序的几乎所有内容,而不仅仅是一些组合和小部件。但是如果我试着从头开始做这个表格,我很快就会发现一些没有简单解决方案的问题。我想知道是否有一些框架(客户端和服务器端)来处理这个问题。据我所知,没有(但我主要在 Java 世界中搜索)。所以我正在认真考虑做我自己的框架,至少对于我的项目来说是这样。

因此,在这个问题中,我要问几件事。首先,基于 ajax 的开发可能存在的问题。然后,我正在寻找一些框架或实用程序来处理它们。最后,如果没有可用的框架,它必须具备哪些功能。

以下是我想到的问题:

1 - 必须启用 JavaScript。安全偏执不是唯一的问题:许多移动设备也无法使用该应用程序。

2 - 有时您需要更新多个 DIV(例如主要内容、菜单和面包屑)。

3 - 未知的响应类型:当您进行 Ajax 调用时,您也设置了回调函数,通常指定预期响应是否为 javascript 对象或 DIV 将结果放入其中。但是当您收到另一种类型的响应时,这会失败:例如,当会话已过期并且用户必须重新登录时。

4 - 浏览器的刷新、后退和前进按钮真的很痛苦。用户会根据情况期待不同的行为。

5 - 当搜索引擎索引一个站点时,只跟随链接。因此,Ajax 加载的内容不会“存在”,因为谁还不知道呢。

6 - 用户可以要求在不同的窗口/选项卡中打开链接。

7 - 地址栏不显示您所在的“真实”页面。因此,您无法复制该位置并将其发送给朋友或为该页面添加书签。

8 - 如果您想通过网站获利,您可以投放一些广告。由于您不刷新整个页面并且希望在一段时间后更改广告,因此您只需刷新广告所在的 DIV。但这可能会违反您的广告服务的条款和条件。事实上,它可能违反 AdSense TOS。

9 - 当您刷新整个页面时,所有 JavaScript 都会被“清理”。但在 Ajax 调用中,所有 JavaScript 对象都将保留。

10 - 您不能轻易更改 CSS 属性。

【问题讨论】:

    标签: java javascript ajax frameworks


    【解决方案1】:

    我认为你必须区分两种情况:

    1. Web 应用程序是用于登录用户(例如,博客作者和员工...)的真实应用程序。 AJAX 作为主要技术在这里很好,因为您可以期望您的用户满足您的系统要求(体面的浏览器、javascript)。
    2. Web 应用程序是任何人都可以公开看到的普通网站。在这种情况下,作为主要技术的 AJAX 是完全不行的,因为您会失去访问者、搜索引擎等。总是编写没有花哨的东西的网站,然后用可选的花哨的东西来增强网站。

    因此,假设您的申请属于类型 1,那么您的问题 1、5 和 8 已经得到解答。

    问题2:没问题。控制 AJAX 调用的 javascript 可以对答案做任何事情。把它分解成碎片,然后按照你的感觉将它们粘贴到 DIV 中。

    问题 3:与 2 相同:只需在您的 javascript 中处理这些情况。

    在问题 4、6 和 7 旁边:您可以通过将应用程序状态保存到实际 url 的哈希中来重现许多正常的后退/前进行为。您可以在不重新加载页面的情况下更改哈希。许多 javascript 框架都提供了使这更加舒适的功能(例如,查看 dojo 的历史)。

    问题 9:没错,但通常应该没什么大问题,除非你的脚本有缺陷。

    问题 10:可以! javascript 的力量可以帮助你,年轻的学徒。例如,通过 javascript 插入链接标签。

    【讨论】:

      【解决方案2】:
      1. http://icant.co.uk/articles/pragmatic-progressive-enhancement/#build
      2. 是的。这就是为什么你遵循 MVC 模式而不只是返回 m 的一部分 arkup
      3. 见 2。
      4. http://developer.yahoo.com/yui/history/ 或类似
      5. 见 1。
      6. 见 1。
      7. 见 4,但这并不完美,为什么 Ajax 对 Web 应用程序很好,但不好 用于网站
      8. 您需要选择可以使用的广告服务
      9. 见 4。
      10. 为什么不呢?

      【讨论】:

        【解决方案3】:

        不应该使用 AJAX 加载页面内容,这正是您概述的那些可用性问题。改用 PHP include() 或一些类似的服务器端模板。

        【讨论】:

          【解决方案4】:

          我想知道是否有一些框架(客户端和服务器端)来处理这个问题。据我所知,没有

          你在开玩笑!有一个 squillion Java Ajax 框架:

          “java ajax 框架”的谷歌列表顶部是:

          http://ajaxpatterns.org/Java_Ajax_Frameworks

          【讨论】:

            猜你喜欢
            • 2010-09-29
            • 1970-01-01
            • 2020-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-27
            • 1970-01-01
            相关资源
            最近更新 更多