it-swarm.asia

PHP vs JavaScript用于动态HTML页面

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

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

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

谢谢大家!

21
Eric

做客户端意味着:

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

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

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

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

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

4
El Yobo

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

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

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

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

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

4
Charlie Tran

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

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

1
Denis de Bernardy

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

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

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

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

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

您可以使用 Mustache ,这是一个运行在许多服务器端语言(PHP,Ruby,Java,...,还有Javascript,支持客户端页面呈现!)的模板引擎!

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

0
ygosteli

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

0
Gort