他们是怎么做到的?动态加载网页/网站。。。框架,脚本?PHP、jQuery、Ruby?

他们是怎么做到的?动态加载网页/网站。。。框架,脚本?PHP、jQuery、Ruby?,php,jquery,ruby-on-rails,css,ajax,Php,Jquery,Ruby On Rails,Css,Ajax,所以我相信你们中的一些人已经看到甚至使用过这样的网站,它们看起来是动态加载页面的,而实际上从未更改过页面。以及更改地址栏中的url href = href.split("#/"); 一些很好的例子是reverbnation.com和rdio.com,我相信还有更多的例子,但这只是我的想法 所以我的问题是。。。他们是怎么做到的?他们使用什么编码语言?它是多种语言的结合。你知道一些可能有用的教程吗 我认为它可能是ajax、jquery和php的组合。可能利用iFrames?但我只是好奇是否有一个框

所以我相信你们中的一些人已经看到甚至使用过这样的网站,它们看起来是动态加载页面的,而实际上从未更改过页面。以及更改地址栏中的url

href = href.split("#/");
一些很好的例子是reverbnation.com和rdio.com,我相信还有更多的例子,但这只是我的想法

所以我的问题是。。。他们是怎么做到的?他们使用什么编码语言?它是多种语言的结合。你知道一些可能有用的教程吗

我认为它可能是ajax、jquery和php的组合。可能利用iFrames?但我只是好奇是否有一个框架或jquery插件我错过了


提前感谢您的帮助。

此类解决方案的一般类别称为“ajax”

这样做的想法是,在请求一些数据后,您不会关闭与web服务器的连接,web服务器会推送替换“web页面的一部分”。根据您的喜好,这些替换项由网页的未替换部分监听,并由web浏览器(简单的html更改)或web浏览器中的javascript引擎(替换时触发的代码)进行相应处理

这种技术可以在web服务器端用任何语言完成,但必须在web客户端用javascript完成。这是因为javascript是唯一一种保证内置到每个现代web浏览器中的语言


虽然过于简单,但应该让您开始吧。

我快速查看了他们的代码,了解到他们正在使用大量javascript来实现这一点

基本上你需要: -数据库后端,可以是 MySQL。 -表示的标记语言,比如说HTML -一种像PHP这样的编程语言来实现逻辑

您要问的是关于AJAX的问题,这意味着异步JavaScript。 这里有一个很好的学习AJAX基础知识的来源:

问题已经回答:

我可以看到一种非常复杂的方法,通过使用服务器为您创建内容,并将其作为一个完整的块放到页面中

前几天我开始为一个非常简单的客户项目尝试这个方法,只是创建了一些简单的东西。我这样做的原因是能够创建动画来改变内容

这是我的想法

 var href = window.location.href;
这将从地址栏获取整个href

href = href.split("#/");
这也可以从一个 有标签

这可以是您想要用来分割每个参数项的任何内容

lastitem = item[item.length-1]
这将把数组的最后一项添加到变量中。此时,我只需要找到包含所需内容的正确页面

通过这种方式,我将链接分为两部分,第一部分是哈希标记后的href,最后一部分是“item”,即每个结束链接

因此只有一个索引文件,其他所有内容都使用jqueryajaxurl添加到内容区域。在开始时,我检查链接是什么并找到它。每个内容都位于另一个php文件中。但是jquery也可以通过ajax url获取html文件并将其内容添加到任意位置

当文档准备好后,我检查参数中的最后一项(在/)是什么。然后我有一个同名的php文件,我找到它并将其添加到内容区域

$.ajax({
  url: lastitem'.php',
  success: function(data) {
    $('.content').html(data);
  }
});
然后链接将使用jquery.click()。如果有一个名为“about”的站点,该链接的href可以是
。这将把它添加到地址栏中url的末尾

href = href.split("#/");
单击事件可以是这样的

$("a").click(function() {

   var href = $(this).attr(href);
   href = href.split(#/);
   href = href[href.length-1];

  $.ajax({
    url: href'.php',
    success: function(data) {
      $('.content').html(data);
    }

  });


});

这只是我将要尝试的一个简单的想法。

不要被误导,因为javascript框架是使用javascript制作的,这意味着任何事情都可以只使用vanilla js来完成

根据我的经验,当加载脚本时,整个呈现视图可能也会改变,这是因为可以在javascript文件中使用javascript创建HTML标记

假设在script1.js中,您有一个如下的标记

let template = `<div>Loaded in script1</div>`
document.body.innerHTML = template;
let template=`script1中加载`
document.body.innerHTML=模板;
在script2.js中

let template = `<div>Loaded in script2</div>`
document.body.innerHTML = template;
let template=`在script2中加载`
document.body.innerHTML=模板;

正如您所见,当加载两个脚本文件中的任何一个时,必须卸载,如果是这样,渲染视图将根据加载的脚本动态更改。

这是一种解释,但我看到过URL更改但页面不重新加载的站点。例如,GitHub在这里点击文件/文件夹:“以及url”让人们认为url不会改变,而你之前谈论的是其他不变的东西。如果要更改URL,请执行http重定向。@Edwin谢谢!我想他们使用的是ajax,只是不确定我是否还遗漏了其他一些很酷的技术,他们似乎都很流畅。@Jerry认为ajax是一种技术,这些网站可能都在使用很多稍有不同的酷技术来实现ajax框架。可以用很少的资源或大量的资源来实现AJAX。更改URL可以使用
location.hash
,这也与AJAX相关:非常感谢!想不到这是HTML5的历史——这是我在很多其他网站上看到的吗,比如lifehacker/twitter,使用/#!/符号。我也是这么想的。:)如果这解决了你的问题,请检查我的答案。很好,这就是我计划使用的,只是确定他们是否都只是使用AJAX来实现这一效果。对,但并非所有情况下都需要数据库,这取决于他的需要…,与php等编程语言一样,如果一切都很简单,即使是简单的html也可以满足他的要求。。。(理论上)