javascript - UI 开发 - JavaScript 与 Ajax

标签 javascript html ajax user-interface

这是一个设计问题。我发现自己在两种 UI 设计风格之间来回徘徊。

我最近开发的原型(prototype)上的 UI 很大程度上依赖于通过 AJAX 将 UI 元素加载为部分 View 。我不喜欢这种方法,因为在加载页面时我必须向服务器发出大量请求。不过,这种设计的优点是我可以轻松编辑部分 View 模板,因此代码更易于管理。

在下一次迭代中,我决定一次性打包所有信息,然后使用 JavaScript 生成部分 View 并将这些信息插入其中(并且仅在实际需要按需更新信息时才使用 Ajax)。我的页面加载速度更快,但我发现自己在 JavaScript 中生成了大量 HTML 片段,这变得越来越难以管理。

据我所知,使用 Ajax 你会得到:

  • 更易于维护 (+)
  • 界面响应时间较长 (-)

仅使用 JavaScript,您就可以得到

  • 更快的用户界面响应 (+)
  • 更容易处理服务器端错误 (+)
  • 更难维护 (-)

所以,我想听听您对以下几件事的评论:

  1. 我不喜欢使用 Ajax,除非我不需要实际的按需数据。我错了吗?

  2. 是否有框架/库可以让管理 HTML 生成 JavaScript 代码变得更容易?

  3. 我错过的这两种方法还有其他优点/缺点吗?

谢谢

最佳答案

如果您想参与其中,有 JavaScript 模板库。一般来说,我会避免手动将 JS 中的 HTML 字符串粘在一起,除非有特殊需要(例如,在某些情况下,处理非常大的表时为了提高性能)。

HTML 黑客攻击很难阅读,而且当您没有正确转义时,很容易出现 HTML 注入(inject)安全漏洞。

从 DOM 方法开始,并使用类似 DOM 的内容操作库来使其更容易。例如,如果使用 jQuery,请执行以下操作:

$('<a>', {href: somelink, text: sometext})

并且不是这个:

$('<a href="'+somelink+'">'+sometext+'</a>')  // insecure mess

通过 XMLHttpRequest 获取数据与将数据包含在 HTML 文档本身中之间不需要有太大区别。您可以将一堆 JSON 数据定向到将构建页面部分的同一函数,无论它是在更新操作中由 XMLHttpRequest 获取,还是包含在文档加载时的函数调用中。

在页面中包含数据时,通常需要包含在任何情况下生成的时间戳,这样,如果浏览器稍后返回该页面而不重新加载它,浏览器可以检测到该信息现在是已过时,并提示 XMLHttpRequest 来更新它。

当您使用客户端 JavaScript 从数据创建页面内容时,常见的问题是,您是否也要从服务器填充初始静态 HTML 版本?如果是这样,您将在客户端 JS 和服务器端语言 (*) 中重复大量内容生成工作。如果不是,那么您将使内容对包括搜索引擎在内的非 JS 用户代理不可见。这对您来说是否重要通常取决于应用程序正在做什么(即它需要可搜索和访问吗?)

(*:除非您可以使用 Node.js 之类的服务器端 JavaScript 并重复使用您的内容生成代码。这仍然是一种罕见的方法。)

关于javascript - UI 开发 - JavaScript 与 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099518/

相关文章:

jquery - 如何在延迟后显示弹出消息

javascript - ArticlesController#show 中的 ActiveRecord::RecordNotFound

php - 不等待 AJAX 请求的响应

javascript - 交换两行后,jQuery DataTable 的行索引不会更新(rowReordering 插件)

javascript - 使用 JS 在所有文本字段中每 3 位数字后添加点

html - 按钮样式 CSS - I.E 问题

jquery - 离开当前页面时调用函数

javascript 选单

javascript - 如何在 silverlight 中全屏模式下点击视频?

html - 引导列在 wordpress 模板中居中