PHP vs JavaScript For Dynamic HTML Pages


PHP vs JavaScript For Dynamic HTML Pages

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

最近我一直在想我是否应该使用 JavaScript 来代替。原理相同,但使用 addElement。

只是想得到一些意见;优点,缺点,php与js,seo注意事项等。

谢谢大家!

在客户端执行此操作意味着:

  1. 在许多不同的环境中而不是单一的环境中执行此操作
  2. 每当用户在没有JS的情况下出现时都会中断(无论出于何种原因)
  3. 让它无法适用于绝大多数机器人(包括搜索引擎)
  4. 投入开发时间来转换所有逻辑
  5. 要求浏览器向服务器发出其他请求,从而减慢加载时间

在决定是否应该做客户端而不是服务器端的事情时,根据经验,问自己两个问题:

  1. 用户是否会从即时反馈中受益,以响应他们做某事?例如,他们尝试提交的表单中存在不正确数据的错误消息。如果是这样,那么在客户端这样做将是有益的。
  2. 可以在服务器端完成吗?如果是这样,请先在服务器端进行,因为它更可靠(对于非装饰性的东西,更难干扰)。以行之有效的方法为基础。

这不是一种或另一种情况;通常您需要同时执行这两项操作。

客户端

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

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

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

可访问性:您的网站应该在没有Javascript的情况下基本正常运行。考虑一下那些可能在Kindle,较旧的黑莓,诺基亚或其他带有数据的功能手机上浏览您的网站的人。他们不需要所有花哨的风格和效果,但他们至少应该能够绕过您的网站。

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

当然,如果您正在开发全JS桌面应用程序或使用诸如Sencha Touch框架之类的东西,则可以从容不迫地接受此建议。

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

还有 UI 问题:如果未启用 JS,则不会加载依赖于 JS 的内容。

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

  • 如果是机器人:在服务器端解析,你可以只输出机器人需要的东西,而不输出图形的东西,...

  • 如果是手机:显示移动优化版本,使用类似 Sencha Touch 的东西,正如查理指出的那样

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

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

你可以使用像Mustache这样的东西,它是一个在许多服务器端语言(PHP,Ruby,Java,...上运行的模板引擎。而且在Javascript上,支持客户端页面渲染!

并尝试使用Javascript框架,如jQuery,Mootools,Dojo或ExtJS,它们将帮助您编写可在每个浏览器上运行的代码。

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