Javascript 与具有持久URL的应用程序相比,构建一个AJAX密集型web应用程序有哪些优点和缺点?

Javascript 与具有持久URL的应用程序相比,构建一个AJAX密集型web应用程序有哪些优点和缺点?,javascript,Javascript,原始问题:创建一个全JavaScript的网站是个坏主意吗? *更改了问题,因为这更像是一次讨论,但可能对其他人有所帮助。* 在本例中,我考虑创建一个最初使用常规HTML(如普通的基本网页)提供总体布局的网站,但随后我计划完全使用AJAX请求动态填充HTML内容区域的内容 该站点的用户永远不会刷新页面或进入新页面,需要生成的所有其他div和元素都将使用AJAX创建(使用缓存的外部JavaScript页面上的大量JavaScript函数) 虽然我实际上并没有创建一个论坛网站,但论坛的功能水平接近

原始问题:创建一个全JavaScript的网站是个坏主意吗?

*更改了问题,因为这更像是一次讨论,但可能对其他人有所帮助。*

在本例中,我考虑创建一个最初使用常规HTML(如普通的基本网页)提供总体布局的网站,但随后我计划完全使用AJAX请求动态填充HTML内容区域的内容

该站点的用户永远不会刷新页面或进入新页面,需要生成的所有其他div和元素都将使用AJAX创建(使用缓存的外部JavaScript页面上的大量JavaScript函数)

虽然我实际上并没有创建一个论坛网站,但论坛的功能水平接近我想要实现的目标。大量的数据库读写

这是个坏主意吗?我是不是在考虑一些可能会让事情变得糟糕的事情?它的性能是否良好(因为我将做大量的客户端工作而较少的服务器端工作)

我意识到这个页面对于那些关闭了JavaScript的人来说是不起作用的,但在这种情况下这并不是一个问题。我也不担心任何不支持JavaScript的移动设备,因为我可能只是创建一个不使用JavaScript的特定于移动设备的网站版本

谢谢

更新: 第一:谢谢大家的回复!我真的很感激

为了澄清起见,我认为这将是一个好主意,主要是因为我似乎可以说,“嘿,AJAX,给我这个页面的原始论坛帖子数据,我将在客户端构建所有HTML。”当然,同样的DB访问,但服务器端页面格式化工作更少,向客户端传输的数据更少


另一个重要的澄清是:我不担心搜索引擎优化,因为这个论坛将是一个只允许登录的网络,不应该被未登录的用户抓取或查看。

是的,它是。您应该始终为搜索引擎和使用旧浏览器的用户提供一个非javascript备用站点。

这是一个好主意,但让我们看看有哪些问题

我能想到的是:

  • 任何人都无法抓取该网站 搜索引擎
  • 您的网站的源代码可以 很容易被偷,每个人都会 能够享受你的辛勤工作
  • Facebook中的页面不受欢迎 (facebook需要OG标签)
  • 难以追踪的分析

    • 一点也不疯狂,但我建议不要这样做,因为这样很难维持下去。你只需要知道你在干什么。Facebook也做了类似的事情。例如,谷歌搜索界面在执行搜索时也会使您保持在同一页面上

      您可能还对以下方面感兴趣:

      Backbone.js

      和烧烤(后退按钮查询)

      一个缺点是,分析脚本不一定能在以这种方式构建的站点上正常工作,这取决于您构建它们的方式

      编辑:

      一个问题是,它将不会被搜索引擎抓取。如果您很好地构建站点(可能使用烧烤),并遵循以下规范,则可以克服此问题:


      几年前,这绝对不是。但现在有了新的浏览器,像jQuery这样的库,YUI的事情可以重新考虑

      免责声明:我不是绝对同意

      相反,它需要仔细评估您的需求、用户体验期望、性能级别等

      如果您的主要用户群使用的是IE6/7甚至8,那么页面速度将明显低于FF或Chrome。在某些情况下,您必须求助于服务器端渲染

      这份清单可能会继续下去,但你是这里最好的评判者(除非你能更具体地说明你的要求)


      最近,我们为一家大型新闻集团推出了一个JS密集型网站。然而,为了保持其性能,我们还利用服务器端缓存和其他一些技术与客户端JS结合使用。

      不,这本身并不是一个坏主意,特别是如果您不关心对未启用JavaScript的浏览器的支持,但它确实带有一些警告。例如,您需要花费相当多的精力来确定JavaScript框架应该如何构造,以及您将使用什么工具。如果你没有拿出一个可靠的解决方案,那么你的网站代码很快就会退化成无法维护的混乱。您还将花费更多的时间进行跨浏览器测试,因为相同的JavaScript代码可能会在不同的浏览器中产生不同的行为(这主要归功于IE)


      就性能而言,服务器端的工作并没有减少。昂贵的服务器端操作是您的数据库查询,无论服务器返回的是独立网页还是AJAX(或JSON)片段,您都必须执行这些操作。事实上,根据您如何构造JavaScript客户端,您最终可能会做更多的工作。例如,如果JavaScript为页面上的每个div发送单独的AJAX请求,总的来说,这比允许服务器在一次操作中为页面上的所有div创建内容的效率要低。

      @phooji您能详细说明一下吗?这在很大程度上取决于您的目标受众,因此无法在这里得到可靠的回答。稍长一点的回答:听起来您正在开发一个新网站应用程序从头开始。在您的情况下,我会选择一种设计和开发策略,以尽可能快和容易地完成大量工作。这样,您可以在以后根据需要添加异步JavaScript调用,以使内容看起来流畅。不需要