使用JavaScript生成的网站的优缺点

6

两个很好的例子是谷歌脸书

最近我一直在思考这种方法的动机。我最好的猜测是它几乎完全分离了后端语言和标记之间的逻辑。构建一个数组以JSON格式发送似乎是维护代码的整洁方式,但我还错过了哪些元素呢?

这种方法的优缺点是什么,为什么如此大规模的公司要这样做?


1
我认为这个问题更适合在[programmers.se]上讨论。 - zzzzBov
5个回答

2
主要的缺点是您在网站内容索引上会遇到一些疼痛。
对于Google,您可以通过使用爬取方案来解决问题。Google支持爬取,它允许您索引页面动态生成的内容(无需重新加载页面)。
要做到这一点,您的虚拟链接必须像这样:http://yoursite.com/#!/register/。在这种情况下,Google请求http://yoursite/register/以索引该地址的内容。
点击虚拟链接时不会重新加载页面。您可以通过使用onclick来提供此功能:
<a href='http://yoursite.com/#!/register/' onclick='showRegister()'>Register</a>

虚拟优势在于页面内容可以在不重新加载页面的情况下更改。在我的实践中,我不使用JavaScript生成来做这个,因为我建立我的界面在固定的位置。当页面重新加载时,用户不会注意到任何东西,因为界面元素出现在预期的位置。
因此,我认为使用动态页面生成是一种很大的痛苦。我认为谷歌这样做并不是为了分离标记和后端(这不是一个真正的问题,你可以使用复杂的后端-前端结构来做到这一点),而是为了利用方便和漂亮的用户表示的优势。

1

优点

  • 客户端保留视图状态(减轻服务器负担)
  • 页面的部分刷新
  • 服务器不需要了解 HTML,从而实现面向服务的架构

缺点

  • 书签(URL 中的状态)的实现更加困难
  • 使其可搜索仍在进行中
  • 需要一个单独的方案来支持非 JS 用户

0

我不完全理解你的问题,但我会尽力回答...

Google和Facebook在其所有网站和产品中广泛使用JavaScript。网络上的每个主要网站都在使用它。

JavaScript是用于修改网站行为的技术。
HTML => 定义结构和元素

CSS => 样式化元素

脚本语言 => 动态生成元素并填充数据

JavaScript => 通过与DOM交互、响应事件和实时样式化元素来修改上述所有内容

这是你所说的每个网站今天的“方法”。没有JavaScript/HTML/CSS的替代方案。您可以更改使用的数据库或脚本语言,但JavaScript/HTML/CSS是一个恒定的因素。


哈..是的,我是一名网站开发者。我的问题是这种方法在大规模网络应用中的优缺点?与通过MVC风格架构让php生成输出相比。这是一种更标准的方法,所以我想知道为什么Facebook / Google选择这种非常JavaScript重的方法。 - grep
我猜他们可能在使用MVC架构和大量的JavaScript。实际上,backbone.js是一个非常流行的JavaScript MVC框架,所以许多网站同时使用两个MVC框架。但无论你的后端技术如何,如果你想要任何“快速”的页面应用程序UI效果(例如AJAX),你仍然需要JavaScript。没有任何服务器端技术可以替代它。你需要客户端技术来获得所有这些可爱的UI,而这就是JavaScript。 - JasonH
我认为这种方法有点违反了典型的MVC模式。我的意思是,它基本上消除了视图的需求,只使用JSON。 - grep
理想情况下,您正在创建一个可以不依赖JavaScript运行的网站。因此,这些视图是必要的。但是,是的,您是正确的,最终您将获得的视图基本上只能供JavaScript使用。 - JasonH

0
考虑一个简单的表单验证示例...
客户端向服务器发送请求... 服务器将执行包含验证逻辑的服务器端代码,并在响应中将结果发送给客户端...
如果客户端具有执行/处理(可以在客户端上执行的)表单的能力...(执行验证)...客户端将不需要向服务器发送请求...并等待服务器响应该请求...

你需要在服务器上进行验证,因此这不是最好的示例。 - Ruan Mendes

0

我建议您查看Google Page Speed最佳实践http://code.google.com/intl/it-IT/speed/page-speed/,了解什么因素构成了一个好的页面...使用JavaScript生成页面似乎很酷,因为它将UI和逻辑分离,但实际上它是完全低效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接