要了解功能,最好尝试识别正在发生的一切。根据通常用于每个可区分组件的技术剖析此功能。剖析的概述将使了解底层技术如何协同工作变得更加容易。我怀疑你可能缺乏经验或术语,无法一眼看出像 liveweave 这样的网站是如何工作的,或者如何搜索各个部分,所以我会为你分解它。由您来研究我将命名的各个组件。了解了这一点,以下是您需要研究的关键:
请注意,如果不是 liveweave 的实际开发者,了解所有后端技术是不可能的,但智能猜测就足够了。做法都是一样的。这是一个粗略的细分。
1) 带有 HTML、CSS 和 JavaScript 的标记页面。这是应用程序面向用户的部分,可以在其中键入内容,以及用户如何与应用程序交互。
2) JavaScript 以异步方式 (AJAX) 将页面的表单提交到后端进行处理。
3) 一种用于处理传入表单的后端编程/脚本语言。在 liveweave 的情况下,表单已发布。它也使用PHP来处理表单。
4) 一个数据库表,每种语言都有一个列(liveweave 有 HTML、CSS 和 JavaScript)。该数据库将插入表单中提交并由 PHP 处理的每个 textarea 中的当前数据作为新行。每行都会生成一个新的哈希值,并将其存储在刚刚插入的数据旁边。一个流行的数据库是 MySQL。
5) 当数据库插入完成时,脚本语言再次接管,并将其响应发送回标记的页面 (1)。该页面正在等待来自后端的响应。 JavaScript 处理响应。在 liveweave 的情况下,响应是要在 URL 中使用的最新哈希。
6) URL 魔法发生在 JavaScript 中。您想查找 JavaScript 最新的 History API,其中将使用诸如 pushState 之类的方法来更新浏览器中的 URL,而无需实际刷新页面。
当导航到具有给定哈希的 URL 时,脚本语言会处理请求,获取哈希,在数据库表中搜索哈希,找到匹配的行,并使用刚刚找到的数据填充页面的文本区域。
在所有这些过程中,应该进行检查以避免重复和大量漏洞利用。这也取决于您进行研究。
需要注意的是,您的问题目前有两个 cmets。 Darren 的链接确实允许 URL 更改,但它是重定向,而不是您想要的。 ksealey的回答没有错;这是一种方法,但它不是最健壮或可扩展的,因此不是解决此问题的推荐方法。