2011-05-24 83 views
20

通常当我放在一起动态生成的HTML标记,我一直在使用PHP来存储信息,然后通过循环创建页面上的元素。一个例子是导航;创建一个对象数组,然后遍历它们以回显标记。在开发或维护过程中,我可能不得不做很小的(或主要的)更改,这对我有很大的帮助。PHP VS JavaScript进行动态HTML页面

最近我一直在想我是否应该使用JavaScript来做到这一点。原理相同,但使用addElement。

只是想得到一些意见,优点,缺点,PHP VS爵士,搜索引擎优化的考虑,等等

谢谢乡亲!

+1

感谢大家对他们的意见。这有助于证实我的怀疑,特别是在搜索引擎优化。堆栈溢出FTW! – Eric 2011-05-24 13:42:10

+0

看起来,尽管在这里达成共识,JavaScript仍然是现在的走向(Angular,React等)。对于没有人提到的JavaScript的一个重要的专业人员,没有页面重新加载,从而带来更好的用户体验。 – 2016-05-18 19:25:25

回答

4

这不是一个或其他类型的情况;一般来说你需要做两个。

做它的客户端可能会慢一些,因为服务器仍然需要找出所有的数据,但客户需要以使其;这将涉及多个请求(很可能),并且DOM操作很慢(特别是在较旧的浏览器上)。

1

如果SEO是你关心的事情很简单:JS没有编入索引。

也有UI的问题:如果未启用JS,JS无依赖的东西会加载。

40

做它的客户端是指:

  1. 做这在许多不同的环境,而不是单一的一个
  2. 具有打破它,每当用户走来没有JS(无论何种原因)
  3. 有它不能为绝大多数机器人(包括搜索引擎)
  4. 投资开发时间将所有的逻辑
  5. 要求浏览器进行额外的请求工作服务器,减缓加载时间

在决定是否应该做一些客户端,而不是服务器端,作为一个经验法则问自己两个问题:

  1. 将从中的即时用户受益回应他们在做什么?例如他们尝试提交的表单中的数据不正确的错误消息。如果是这样,那么做客户端将是有益的。
  2. 可以做服务器端吗?如果是这样,首先做服务器端,因为它更可靠(并且非美化的东西,更难以干预)。 Build on things that work
+2

我的经验法则是“做尽可能多的服务器端”。 JS仅用于渐进式增强。任何人,很好的答案。 +1 – mpen 2011-05-24 06:30:30

+0

@Mark - 是不是我说的? :) – Quentin 2011-05-24 06:47:52

+0

+1,很好的答案,比我的更详细和深思熟虑。 – 2011-05-24 06:59:31

4

最好的做法是产生在服务器端进行必要的标记。原因包括:

SEO:大多数爬虫机器人不会解析Javascript,所以他们会跳过任何关键的东西,你用addElement生成。

无障碍:您的网站应该基本功能没有JavaScript。考虑那些可能在Kindles,老黑莓,诺基亚或其他带数据的功能手机上浏览您的网站的人。他们不需要所有奇特的风格和效果,但他们至少应该能够绕过你的网站。

一致性: JS可以添加另一个级别的跨浏览器可变性。为什么依靠客户端渲染必要的标记?做服务器端。

当然,这个建议可以,如果你正在开发一个全JS桌面应用程序或使用类似的Sencha Touch框架内采取大步。

0

一种可能性是检测什么样的用户正在浏览您的网站:

  • 如果它是一个机器人:解析在服务器端,你可能只是输出由机器人所需要的,不图形化的东西,...

  • 如果它是一个移动:显示为手机优化的版本,使用类似煎茶触摸,查理指出

  • 如果它是一个标准的浏览器,无javascript:在渲染页面服务器 侧

  • 如果它是一个标准的浏览器,使用javascript可以实现:只需发送从服务器端的数据(或使用Ajax加载),从客户端和呈现数据

您可以使用的东西像Mustache,至极是许多服务器端语言(PHP和Ruby,Java的模板引擎运转......也于JavaScript,可实现客户端页面渲染!

,并尝试使用一个JavaScript框架喜欢jQueryMootoolsDojoExtJS,他们会帮你写将在每个浏览器上运行的代码。

+0

使用这些“框架”只会让您的代码在少量的新兴浏览器上运行。当然不是“每个浏览器”。尽可能多地使用服务端逻辑和缓存静态(或大多数静态)页面。 – RobG 2011-05-24 07:25:22

+0

他们中的大多数人都支持旧浏览器,对于我使用jQuery尝试的方式,它工作得非常好。 并希望我们很快就能够扔掉IE6 ......(我知道它不是唯一一个旧浏览器......但肯定是最丑的一个......) – ygosteli 2011-05-24 08:13:16

0

PHP是好一些事情,包括把手类型模板,并快速的服务器端内容替换。但它对于一些事情也不是很好,比如单页应用程序和游戏,实时更新网站。这些东西都是JavaScript强大的地方。

+1

请您详细说明这些差异吗? – 2014-10-24 01:12:37