0

我目前正在研究 jQuery mobile 及其使用 XmlHttpRequest 加载网页的系统。例如,因此可以在两个页面之间自动执行过渡动画。

但是,我不清楚。如果我理解正确,jQuery 移动驱动网站的每个新页面都被注入到初始网页的 DOM 中。jQuery mobile 的文档甚至告诉我们,由于这种机制,<title>新网页的标签没有被考虑在内。

因此,在某种程度上,如果我的初始网页 A.html 加载了页面 B.html,我会倾向于认为网页 B.html 不需要具有完整的 HTML 语法和<html>,<head><body>标签。

<div>我的页面 B.html 可以直接以元素开头。

我对吗?
使用 jQuery mobile 加载 HTML 页面时是否需要完整的 html 页面?
使用错误/截断 HTML 语法的网页有哪些优点和缺点(除了这个页面不应该直接访问,而是通过主页)?

4

3 回答 3

2

在使用 jQuery mobile 时,您“应该”使用完整页面,但它当然会变得很长,然后将所有内容加载到 DOM 中需要很长时间。很多开发者不喜欢这样。

回答你的问题:只要你有一个有效的 html 页面(你的 jquery 移动应用程序的主页),它就可以加载一个“错误/trumcated”的 html 文件。它还可以很好地加载格式正确的 html 文件。无论您觉得看起来更干净,都由您决定。

这是一个类似的问答,有助于支持我的观点:jQuery mobile multiple HTML files

一个警告:如果这是一个可以在线访问的网站,并且如果您采用拥有多个(和碎片化)页面的方法,您可能需要停下来考虑一下 SEO。您可能需要一个 robots 文件阻止 Google 漫游器抓取其他页面。如果您完全关心整个网站的 SEO,那么您应该查看 Google 撰写的关于移动响应式网页设计的这篇文章。它可以从一开始就改变你的整体观点。

我的意见是您应该将您的 jQuery Mobile 网站全部放在一个页面上。您总是可以根据需要使用 JavaScript/jQuery 注入额外的标记。这就是我为 jQuery Mobile 网站采用的方法。另一方面,如果您将其包装在 PhoneGap 中以部署为原生移动应用程序,那么我将使用碎片页面,因为 a) SEO 不适用于它,b) 我希望 DOM 加载速度尽可能快尽可能让它看起来像“真正的原生应用程序”一样加载。我相信碎片化页面会帮助它更快地加载,而且我知道根据需要使用 JavaScript/jQuery 注入代码会使其加载速度更快。

于 2012-06-28T21:14:05.490 回答
1

但是,当用户从 开始A.html,然后转到B.html,然后刷新页面时会发生什么?jQuery Mobile 使用一个pushState插件来更新 URL,就像用户B.html正常访问页面一样。这意味着如果用户在 上刷新B.html,如果它不是一个完整的文档,将不会有适当的包含来创建您的移动站点。

我的建议是在每个文档中包含 jQuery Mobile JS/CSS 文件,在每个文档中包含 jQuery Core JS 文件,并包含包含所有必要 JS 和 CSS 的外部自定义 JS/CSS 文件。这样,无论用户访问您网站中的哪个页面,它都将包含所有必要的信息。这不会给您的网站增加很多臃肿,每页只包含几行内容。大多数情况下,当 jQuery Mobile 通过 AJAX 将页面拉入 DOM 时,所有这些包含将被忽略(jQuery Mobile 仅抓取第一个data-role="page"元素及其内容,文档中的其他所有内容都被忽略)。

长话短说:

为每个文档省略适当的 HTML 结构所带来的性能优势不值得破坏用户对常见事件的体验,例如刷新页面(当用户打开浏览器到已经打开的页面时,在许多设备上会自动发生这种情况)。

不使用有效 HTML 结构的一个主要缺点是您正在损害您的 SEO。文档中的元标记<head>对于页面中的内容仍然应该是唯一的,以便搜索引擎爬虫可以正确索引您的站点。

于 2012-06-28T21:34:28.367 回答
0

如果您尝试加载外部 html 文件,最好有一个完整的 html 页面。该html页面也应该有<div data-role="page">标签。我认为 jquery mobile 会查找该标签并基于该标签加载新页面。

您还可以将所有页面的 html 包含在一个页面中,例如“A.html”。每个页面 html 应该以<div data-role="page">

于 2012-06-28T21:39:01.653 回答