繁体   English   中英

动态HTML页面的PHP与JavaScript

[英]PHP vs JavaScript For Dynamic HTML Pages

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

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

只是想对此有所了解; 优点,缺点,php vs js,seo考虑因素等

谢谢大家!

做客户端意味着:

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

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

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

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

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

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

搜索引擎优化:大多数爬虫机器人都不会解析Javascript,所以他们会跳过你用addElement生成的任何关键信息。

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

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

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

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM