6

与网站相比,当开发 Web 应用程序时,有什么理由使用多个 HTML 页面,而不是使用一个 html 页面并通过 Javascript 做所有事情?

我希望它取决于应用程序 - 也许 - 但会感谢有关该主题的任何想法。

提前致谢。

编辑:

根据这里的回复和我自己的一些研究,如果你想做一个单页、完全由 JS 驱动的网站,一些有用的工具似乎包括:

JQuery 插件:

JQuery 历史: http ://balupton.com/projects/jquery-history

jQuery地址: http: //plugins.jquery.com/project/jquery-address

JQuery 分页: http: //plugins.jquery.com/project/pagination

构架:

Sproutcore http://www.sproutcore.com/

卡布奇诺 http://cappuccino.org/

可能,JMVC: http ://www.javascriptmvc.com/

4

10 回答 10

5

基于页面的应用程序提供:

  • 能够在任何浏览器或设备上工作
  • 更简单的编程模型

它们还提供以下内容(尽管许多 js 框架都可以解决这些问题):

  • 可书签性
  • 浏览器历史
  • 刷新或 F5 重复操作
  • 可索引性(如果应用程序是公开且开放的)
于 2010-12-28T22:04:35.573 回答
2

更大的原因之一是您的网站的可搜索性。

用 javascript 做所有事情会使搜索引擎抓取您网站的所有内容变得复杂,因此无法完全索引它。有一些方法可以解决这个问题(使用 Google 最近的 AJAX SEO 指南),但我不确定是否所有搜索引擎都支持这一点。最重要的是,它比仅制作单独的页面要复杂一些。

更大的问题是,无论您决定构建多个 HTML 页面,还是决定使用某种框架或 CMS 为您生成它们,您网站的不同部分都有各自独有的 URL。例如,关于部分将具有类似 mywebsite.com/about 的 URL,并且该 URL 用于网站中实际的“关于”链接。

于 2010-12-28T22:02:25.413 回答
1

At the OP's request, I'm going to discuss my experience with JS-only sites. I've written four relevant sites: two JS-heavy (Slide and SpeedDate) and two JS-only (Yazooli and GameCrush). Keep in mind that I'm a JS-only-site bigot, so you're basically reading John Hinkley on the subject of Jody Foster.

  1. The idea really works. It produces gracefully, responsive sites at very low operational costs. My estimate is that the cost for bandwidth, CPU, and such goes to 10% of the cost of running a similar page-based site.
  2. You need fewer but better (or at least, better-trained) programmers. JavaScript is an powerful and elegant language, but it has huge problems that a more rigid and unimaginative language like Java doesn't have. If you have a whole bunch of basically mediocre guys working for you, consider JSP or Ruby instead of JS-only. If you are required to use PHP, just shoot yourself.
  3. You have to keep basic session state in the anchor tag. Users simply expect that the URL represents the state of the site: reload, bookmark, back, forward. jQuery's Address plug-in will do a lot of the work for you.
  4. If SEO is an issue for you, investigate Google Ajax Crawling. Basically, you make a very simple parallel site, just for search engines.

When would I not use JS-only? If I were producing a site that was almost entirely content, where the user did nothing but navigate from one place to another, never interacting with the site in a complicated manner. So, Wikipedia and ... well, that's about it. A big reference site, with a lot of data for the user to read.

于 2010-12-29T00:04:42.983 回答
1

单页、Ajax 化网站的最大缺点之一是复杂性。原本可能分散在几页上的内容突然变成了一个巨大的母版页。此外,协调页面的状态(例如,跟踪您是否处于编辑模式或预览模式等)和调整界面以匹配可能很困难。

此外,如果必须加载多个大型 JS 文件,那么一个重 JS 的母版页可能会拖累性能。

于 2010-12-28T22:14:10.133 回答
0

对于一些额外的论点,请查看单页接口宣言以及 Hacker News 上的一些(大部分)负面反应(SPI 页面底部的链接):

单页界面宣言:http: //itsnat.sourceforge.net/php/spim/spi_manifesto_en.php

于 2010-12-31T17:57:17.923 回答
0

stofac,首先,感谢单页接口(SPI)宣言的链接(我是这个无聊文本的作者)

这么说,SPI != 通过 Javascript 做所有事情

看看这个例子(以服务器为中心): http: //www.innowhere.com/insites/

在 GAE 中也是如此:http: //itsnatsites.appspot.com/

有关 GAE 方法的更多信息: http ://www.theserverside.com/news/thread.tss?thread_id=60270

在我看来,完全在 JavaScript 上编写一个复杂的 SPI 应用程序/网站是非常复杂和有问题的,我认为最好的方法是 SPI 的“混合编程”,以服务器为中心的大状态管理和以客户端为中心的混合(又名 JavaScript 手工)用于特殊效果。

于 2011-01-01T11:10:45.443 回答
0

实际上,我只使用一个页面开发了我的第一个应用程序。

..它变得凌乱

我的想法是创建一个尽可能模仿桌面环境的应用程序。特别是,我希望在弹出窗口中显示一些应用程序数据的详细视图,无论它们所在的应用程序部分如何,都可以保持其状态。

我的科学怪人就这样诞生了。

由于预算/时间限制,最终导致代码失控。我的 JavaScript 源代码的各个部分都混在一起了。事实证明,保持各种观点的正确状态是……困难的。

通过适当的计划和技术,我认为“单页”方法是一种非常简单的方法,可以打开一些非常有趣的可能性(例如:维护跨应用程序部分状态的小部件)。但它也开辟了许多……许多潜在的问题领域。包含...

  • 泛滥全局命名空间(如果你还没有自己的......制作一个
  • 代码组织很容易……失控
  • 上下文 - 很容易

我敢肯定还有更多...

简而言之,我会敦促你不要仅仅因为兼容性问题而依赖 JavaScript 依赖。我已经意识到根本没有必要对所有事情都依赖 JavaScript 。


我实际上正在删除Progressive Enhancement中的 JavaScript 依赖项。它只是更有意义。您可以使用正确编码的 JavaScript 实现相同或相似的效果。

这个想法太...

  1. 开发出格式良好、功能齐全的应用程序,无需任何 JavaScript
  2. 样式它
  3. 用 JavaScript 包装整个事情

使用渐进增强可以开发一个应用程序,为用户提供尽可能好的体验。

于 2010-12-28T23:09:39.400 回答
0

模块化。多个文件允许您更清晰地划分不同的工作流程路径和流程部分。您的业​​务规则很可能通常不会直接影响您的布局规则,并且多个文件将更好地帮助编辑需要编辑的内容,而不会破坏不相关的内容。

于 2010-12-28T22:01:57.870 回答
-1
于 2010-12-29T13:55:19.070 回答
-1

在任何地方都使用 ajax 在单个页面上执行所有操作会破坏浏览器的历史记录/后退按钮功能并让用户感到厌烦。

于 2010-12-28T22:04:08.727 回答