为什么人们不喜欢 PHP?
PHP 是超文本预处理器、一种面向 Web 开发的通用脚本语言,尽管有些人认为 PHP 已经过时,但 PHP 仍在互联网上使用,例如 Facebook、维基百科、Slack 和 Etsy 等大公司。
随着 JavaScript 的兴起以及 React、Angular 和 Vue 等框架和库的激增,许多新开发人员出于多种原因正在转向这些而不是 PHP,受此 Twitter 线程的启发,我们将在特性、功能、性能和协作方面讨论 PHP 和 JavaScript。
PHP 的历史
PHP 最初由 Rasmus Lerdorf 于 1994 年开发,随着时间的推移变得更加健壮,遵循 2011 年的定期发布周期并引入了诸如支持类型、JSON、命令行实用程序和即时编译等功能,作为一种灵活的服务器端技术,PHP 适用于多种用例。
JavaScript 在 2000 年代初期成型,但是此时 PHP 已经被广泛采用,随着 JavaScript 作为一种语言的成熟以及其他库和框架的引入,开发人员开始寻求用 JavaScript 代替 PHP 来满足他们的 Web 开发需求。
PHP 提供了 JavaScript 开箱即用的许多功能,例如处理条件、循环、类型、模块化和对象,PHP 的一个主要障碍是 JavaScript 的入门门槛较低,例如,您可以仅使用浏览器和您喜欢的文本编辑器来编写和运行 JavaScript。但是,要使用 PHP(一种脚本语言),您必须使用解释器和运行时。
实现 PHP
实现 PHP 有几种不同的方法,但最流行的方法之一是 Zend 引擎,要使用 Zend 引擎,您需要一台运行 PHP 编译器的机器,然后您可以从托管位置为 Zend 引擎提供服务。
使用 JavaScript,您可以使用 Node.js 运行时处理前端和后端开发,前端项目直接在客户端的浏览器中运行 JavaScript,这意味着可以从 CDN 或静态文件位置提供 JavaScript 代码,因此您不需要成熟的服务器来托管您的内容。
同样,使用 npm,您的后端项目也会留下非常小的足迹;您可以在服务器上运行它们,也可以在不同的云提供商处使用无服务器功能。
JavaScript 与 PHP:性能
JavaScript 和 PHP 可以执行类似的功能,但在幕后,您将看到它们的真正不同之处。
JavaScript 是事件驱动的,带有允许异步活动的事件循环,与同步运行 JavaScript 代码(每行一次运行一个)不同,JavaScript 可以一次运行代码的多个部分,从而防止 JavaScript 程序的主线程被阻塞,此外,回调函数和事件循环等功能允许您同时处理多个活动。
另一方面,PHP 是同步的,但允许多线程。PHP 要求每行代码按顺序运行,理论上会减慢您的程序速度,然而,有些人可能会争辩说 PHP 的同步特性使其更易于使用。
当您考虑 JavaScript 的非阻塞实现的好处时,我会说 JavaScript 在这方面优于 PHP。
JavaScript 与 PHP:集成
JavaScript 可以与许多不同的 Web 技术结合使用,包括 HTML、XML、Ajax,甚至带有 React 组件的 JSX。借助 npm 和 Node.js 运行时,JavaScript 开发人员可以轻松使用各种包。Angular、React 和 Vue 等领先的前端框架和库都有自己的特性,这些特性甚至更多地基于这些集成。
另一方面,您可以将 PHP 与 HTML 集成,后者在 WordPress 和 Drupal 等 CMS 平台中流行,此外,PHP 与传统的 LAMP 堆栈配合得很好。与 SQL 的集成是通过 MySQLi 扩展实现的。
通常,JavaScript 和 PHP 都可以在任何带有 Web 浏览器的设备上运行,此外,JavaScript 具有 Node.js 运行时的后端功能。有几个 npm 包和框架允许您构建可以在服务器端运行的 JavaScript API。
JavaScript 和 PHP 都可以适应不同的需求,但特别是,JavaScript 可以在广泛的平台上很好地工作,不需要太多的额外工作。
如果您想在网页中使用 JSON 数据或注入的代码,设置 PHP 需要一个后端以及必要的标签来包装您的语句。
JavaScript 与 PHP:特性
JavaScript 和 PHP 提供了许多相同的内置功能,包括:
条件句
循环
转换,即字符串到整数等。
模块化,即功能和/或方法
对象
PHP 和 JavaScript 之间的区别在于各自实现其行为的方式,由于 JavaScript 的非阻塞性质,您的程序可以具有低延迟并同时处理许多操作,此外,您可以使用 promises 甚至 RxJS observables 之类的东西来控制行为。
JavaScript 还包含范围的概念,允许您控制变量和数据点。
当您有一个包含许多模块或功能的大型项目时,Scope 非常强大。
让我们用一个例子来试试。该 helloWorld 函数有一个局部作用域变量 message,该变量仅在该 helloWorld 函数中可用,当您尝试访问函数外部的变量时,您将获得一个未定义的值,只要您尊重该变量的范围和使用,您就可以在多个地方使用相同的变量名,这是一个主要优势 JavaScript。
对于 PHP,您通常使用 $变量名并遵循与 JavaScript 类似的构造。PHP 还允许您使用 echo 类似以下代码段的方式写出值:
JavaScript 与 PHP:协作
PHP 和 JavaScript 都有强大的社区支持。开发人员在开始或解决问题时可以参考无数在线博客和视频,所有主要的 JavaScript 框架和库,包括 Angular、React 和 Vue,都是开源的,并且拥有定期更新其存储库的开发团队。PHP 也是开源的,很多 GitHub 项目都包含 PHP。
在开发者经验方面,JavaScript 通常需要更多的背景知识。要使用 JavaScript,您通常必须了解事件循环以及其他 Web 技术(如 CSS 和 HTML)。
这些技术都是运行互联网的框架的一部分,因此,学习它们不一定是一项糟糕的投资,一旦您熟悉了 JavaScript,您的项目就有了广泛的选择。
另一方面,PHP 要简单得多,它不仅是同步的,而且它的模型遵循更传统的后端技术,如 Java 和 C。但是,您仍然需要一个服务器或一些运行 PHP 解释器的环境,通常还有 LAMP 堆栈的其余部分。
在协作方面,我会说在 JavaScript 项目上与团队合作更容易,主要是因为您用来完成工作的工具很少,随着在线编码平台和环境的出现,这变得更加容易,如果您想在 PHP 项目上进行协作,则必须先设置一个工作环境,然后才能运行任何代码。
哪一个更好?
JavaScript 和 PHP 都可以满足广泛的需求,PHP 仍然如此广泛使用的事实表明,它对许多网站具有可爱的价值,争论不应该是哪一种更好,而是哪一种更适合您的需求。
如果您的团队已经在 LAMP 堆栈中工作,那么 PHP 可能最适合您,如果您的团队不太了解 LAMP 堆栈并且后端经验也较少,那么 JavaScript 是您的最佳选择。
我个人喜欢在项目中使用 JavaScript,我喜欢我可以轻松地将技能从 React 转移到后端 Node.js API 的技能,直接在浏览器中运行代码也很棒,可以轻松地在不同平台上启动和运行 JavaScript。
许多开发人员仍然喜欢 PHP,并为它找到了很好的用例。这真的归结为您的个人团队和项目。
总结
在这篇文章中,我们对 PHP 与 JavaScript 进行了高层次的讨论,回顾了各自的优缺点。
版权声明: 本文为 InfoQ 作者【Ethereal】的原创文章。
原文链接:【http://xie.infoq.cn/article/ab3adbe86d27f9199f0650f53】。未经作者许可,禁止转载。
评论