Node.js 与 PHP 对比
毫无疑问,PHP 是最知名、最常用的服务器端脚本语言。在 Django 和 Ruby on Rails 流行起来之前(2005-2006 年),几乎没有比 PHP 更适合后端的语言了。然而,科技界正朝着简洁化(“JavaScript 无处不在”)的方向快速发展,曾经的前端语言已经成功扩展到后端。因此,现在我们面临着“Node.js vs PHP”这个流行的后端难题。让我们一起来尝试解决这个问题!
PHP
(超文本预处理器)诞生于 1994 年,是一种用于后端 Web 开发的脚本语言。近十年来,它一直是后端开发人员的唯一选择。尽管近年来新技术层出不穷,但 PHP 的发展并未停滞(其最后一个稳定版本于 2018 年 1 月发布)。根据 2018 年的最新统计数据,超过 80% 的网站都是使用 PHP 构建的(尽管有些网站使用了多种后端语言构建)。
Node.js
Node.js 是一个开源的 JavaScript 后端脚本运行时环境,由 Google 的 V8 JS 引擎驱动。它创建于 2009 年,其主要优势在于 Node.js 支持异步编程。它可以在一个线程上处理数千个请求,这意味着无需等待上一个命令完成。尽管使用 Node.js 构建的网站比例相对较低(0.4%),但它在开发者中正迅速流行起来。
Node.js 与 PHP:差异
语言:
在开始 Node.js 与 PHP 的比较讨论之前,我们不得不先谈谈 JavaScript 和 PHP 这两种编程语言的具体特性。就语法简洁性而言,PHP 更胜一筹。像与数据库交互这样基本的操作,在 PHP 中所需的代码比 Node.js 更少、更简洁(与 HTML 非常相似)。
然而,PHP 的简单性并非没有限制。另一方面,Node.js 的一些复杂性被更多使用各种 JavaScript 库进行客户端和服务器双向异步脚本编写的可能性所抵消。
此外,Node.js 的 JavaScript 语法显然也是前端开发人员选择它的原因之一。因此,全栈开发人员可以利用 JavaScript 编写客户端和服务器端脚本所带来的代码可重用性优势。
要求:
虽然 PHP 自带 Web 服务器(自 PHP 5 起可用),但它功能并不齐全,仅可用于测试目的。最常用的 PHP 服务器是 Apache 和 NGINX。在实际开始使用 PHP 之前,需要先安装并配置服务器(通过安装相应的 PHP 组件)。
Node.js 不需要任何外部服务器。您可以通过安装 Node.js 开始使用。之后,只需通过 npm 安装 http-server 软件包(只需几行代码)即可使用内置的 Web 服务器工具。此外,安装 Express.js(一个 Node Web 框架)不仅可以处理简单的 HTTP 请求,还能提供更多功能。
说到库,PHP 和 Node.js 都构建了允许从命令行安装和管理它们的工具(PHP 中的 Composer 和 Node.js 中的 npm)。
可扩展性
比较 Node.js 和 PHP 的可扩展性,结果表明这两种技术都具备可扩展性。使用 PHP 或 Node.js 构建大型可扩展应用程序完全有可能。然而,在构建可扩展应用程序架构的效率方面,两者仍然存在差异。
PHP 已支持大多数流行的内容管理系统(例如 Drupal、Joomla 和 WordPress),因此经常被用作构建博客和电商 Web 应用的工具。相比之下,Node.js 则能高效地创建可扩展的动态解决方案,处理大量的 I/O 操作。Node.js 也可以在多核系统上进行扩展,但需要付出更多努力。
处理数据
在处理数据方面,Node.js 的主要工具是 JSON。一方面,它能够被 NoSQL 理解;另一方面,它还用于在客户端传递数据。如果说早期版本的 PHP 在处理 JSON 时遇到了一些问题,那么现在这个问题已经不再存在,因为从 PHP 5.2 开始,JSON 已包含在核心中。
然而,PHP 在数据处理方面的主要优势在于它兼容所有托管服务。而 Node.js 的实际情况与此相去甚远,它只适合于少数几种托管服务。
Node.js 与 PHP:相似之处
语言:
PHP 和 JavaScript 都是解释型语言,不仅可用于 Web 编程,还可用于通用脚本编写。它们需要特定的运行时环境才能进行脚本编写(对于 JavaScript 来说,运行环境可能是浏览器或服务器,这取决于它是用于客户端脚本还是服务器端脚本)。
性能
尽管 Node.js 一直因其异步模型而被认为是高性能的,但 PHP 也朝着这个方向发展。借助 ReactPHP 等库,PHP 也有可能用于事件驱动编程。
另一方面,大多数服务器都基于多线程运行,这给 Node.js 的使用带来了困难。在这种情况下,异步编程就成了一个更大的障碍,因为并非每个中级程序员都具备足够的专业知识。
尽管 Node.js 速度更快(一些 Node.js 与 PHP 的基准测试可以在这里找到),但就纯性能而言,PHP 7 和 Node.js 几乎处于同一水平。换句话说,处理异步 I/O 操作并不能使 Node.js 在 Node.js 与 PHP 的性能竞争中胜出。
结论
PHP 和 Node.js 显然各有优缺点。然而,这并不意味着你不能使用 PHP 或 Node.js 构建相同的应用程序。那么,你该如何选择呢?我认为,在 2018 年选择 Node.js 还是 PHP 的最佳方式是选择与你用于开发 Web 应用程序的其他技术最兼容的那个。这将节省你的时间和资源。
显然,如果您打算使用大多数 MEAN(MongoDB、Express.js、AngularJS、Node.js)堆栈工具、众多 JavaScript 库(Angular、React、Backbone 等)或开发 SPA(单页应用程序),那么 Node.js 可能更适合您的项目。另一方面,如果您利用大多数 LAMP(Linux、Apache、MySQL、PHP)堆栈技术或其他服务器(例如 SQL、Oracle、Postgresql),则可能需要首先考虑 PHP。
尽管关于 Node.js 与 PHP 的讨论似乎不会很快停止,但需要记住的是,它们之间并没有什么特别之处,你只能用其中一种来实现它们的功能,它们是可以互换的。不过,你始终可以根据开发专业知识的水平以及开发过程中要使用的技术栈来选择。
鏂囩珷鏉ユ簮锛�https://dev.to/sandipmavani/nodejs-vs-php-52g4