网站导航-PHP/HTML vs.Ajax vs.CSS/Javascript


Site Navigation - PHP/HTML vs. Ajax vs. CSS/Javascript

我最近一直在争论是否使用AJAX进行网站导航,只传输只需要更新的HTML元素,或者新元素和当前元素之间是否没有显著差异,只加载整个页面(php生成或静态HTML)

然而,我想,如果新内容的大小相对于当前页面来说不是很大。。。也许我应该发送一个隐藏的div(通过CSS)和当前页面。

第三种方法似乎是一个简单的解决方案。例如,只需发送整个当前页面+用户可能请求的任何其他内容作为隐藏div。

当用户选择内容时,只隐藏当前内容,并显示隐藏的内容。。。

总而言之,每种方式(普通、Ajax、CSS)对用户来说都是一样的,但CSS/Javascript解决方案将提供最快、最简单的界面。例如,如果内容从未使用过,Ajax可能会减少下载。

这是一个验证问题。这是浏览web应用程序的有效方法吗?通过使用display属性或opacity属性隐藏/显示div来翻转内容?

备注(对答案的响应)

  1. Hiddendiv将是用户不更改的静态数据。我原以为这会很明显,但现在我已经明确了

谢谢!

您需要这样思考。

如果隐藏的内容是动态的(变化的),那么就需要AJAX,因为AJAX通常用于从DB中获取更新的内容。

如果你的内容是静态的(没有变化),那么我们谈论的是多少新内容?如果新内容在隐藏的DIV中,那么它的大小是否会对渲染时间产生重大影响?如果它很少,那么我会说使用隐藏的DIV。如果它很多,那么也许是时候考虑AJAX从外部页面加载它了。

这里有一个简单的解决方案,可以让您开始使用隐藏的DIV:

<script>
     function setVisibility(id, visibility){
     document.getElementById(id).style.display=visibility;}
</script>
<div id="message1" onclick="setVisibility('message1', 'none');setVisibility('message2', 'inline');"> >Hey What's Up?</div>
<div style="display:none;" id="message2">Not Much You?</div>

它确实取决于所显示的数据。Facebook无法做到这一点,因为数据经常更新,会出现不同步的问题。

由于大部分开发都是我自己完成的,所以拥有一个完整的ajaxy网站对我来说似乎是一项艰巨的任务,所以我通常会翻页,但里面的一些内容我是用ajax生成的。

比如说有一个表单可以创建一些东西,我在后台提交该表单(非常好的jquery插件),然后在列表的顶部显示新数据($.prepend)。这样,事情仍然是一团糟,但不会达到单个程序员难以管理的程度。

您需要记住的一件事是保持您的网站尽可能不可破坏和可访问。因为Ajax内容不在页面上,蜘蛛无法对其进行索引等。Ajax需要比"标准"CSS更改更多的错误测试/捕获等,所以请确保它在所有浏览器中都能工作。导航不好或坏是没有任何借口的。

您的想法绝对是一种有效的方法您基本上是在寻找一个初始的、较长的请求和许多较短的请求之间的折衷。只要最初隐藏的内容不是免费的,用户体验就可能受益于首先获得所有标记,并根据需要使用JavaScript+CSS隐藏/显示它。

建议的方法:考虑使用jQuery的

  • hide()
  • show()
  • 或切换()

方法,并与历史记录管理器相结合,以在用户导航页面状态时模拟真实的浏览器历史记录更改。这是我在我的网站上使用的方法:paislee.net。IMO干净而快速,因为没有新的HTTP请求。