动态HTML页面的PHP与JavaScript

时间:2011-05-24 06:12:58

标签: php javascript html seo

通常,当我将动态生成的HTML标记组合在一起时,我一直在使用PHP来存储信息,然后循环遍历它以在页面上创建元素。一个例子是导航;创建一个对象数组,然后循环它们以回显标记。这有助于我在开发或维护期间进行轻微(或主要)更改的时间。

最近我一直想知道是否应该使用JavaScript代替这一点。原理相同,但使用addElement。

想得到一些意见;优点,缺点,php vs js,seo考虑等等。

谢谢大家!

6 个答案:

答案 0 :(得分:40)

做客户端意味着:

  1. 在许多不同的环境中进行,而不是单一的环境
  2. 每当用户出现没有JS(无论出于何种原因)时,它就会中断
  3. 无法为绝大多数机器人(包括搜索引擎)工作
  4. 投入开发时间来转换所有逻辑
  5. 要求浏览器向服务器发出其他请求,从而减慢加载时间
  6. 在决定是否应该做客户端而不是服务器端时,根据经验,问自己两个问题:

    1. 用户是否可以获得即时反馈以响应他们的行为?例如他们尝试提交的表单中的不正确数据的错误消息。如果是这样,那么做客户端将是有益的。
    2. 可以在服务器端完成吗?如果是这样,首先服务器端,因为它更可靠(对于非化妆品,更难干扰)。 Build on things that work

答案 1 :(得分:4)

这不是一种或另一种情况;通常你需要做两件事。

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

答案 2 :(得分:4)

最佳做法是在服务器端生成任何必要的标记。原因包括:

SEO:大多数抓取机器人都不会解析Javascript,因此他们会跳过您使用addElement生成的任何关键内容。

辅助功能:您的网站基本上无需使用Javascript即可运行。考虑一下可能正在浏览您的网站上的人,包括Kindles,旧Blackberry,Nokias或其他带有数据的功能手机。他们不需要所有花哨的风格和效果,但他们至少应该能够绕过你的网站。

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

当然,如果您正在开发一个全JS桌面应用程序或使用Sencha Touch框架之类的东西,这个建议可以大步迈进。

答案 3 :(得分:1)

如果您关心SEO,事情很简单:JS没有编入索引。

还存在UI问题:如果未启用JS,则不会加载与JS相关的内容。

答案 4 :(得分:0)

一种可能性是检测哪些用户正在查看您的网站:

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

  • 如果是移动设备:使用像Sencha Touch这样的东西展示移动优化版本,正如查理指出的那样

  • 如果是标准浏览器,没有javascript:在服务器端渲染页面

  • 如果它是标准浏览器,则启用javascript:只需从服务器端发送数据(或使用Ajax加载)并从客户端呈现数据

您可以使用Mustache之类的东西,它是在许多服务器端语言上运行的模板引擎(PHP,Ruby,Java,...还有Javascript,支持客户端页面呈现!) p>

尝试使用jQueryMootoolsDojoExtJS等Javascript框架,它们将帮助您编写将在每个浏览器上运行的代码。< / p>

答案 5 :(得分:0)

PHP适用于某些方面,包括Handlebars类型模板和快速服务器端内容替换。但对于某些内容,例如单页应用程序和游戏,网站的实时更新,它也不是很好。那些东西是JavaScript强大的地方。