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是一个开放源代码运行时环境,用于使用Google V8 JS引擎支持的Javascript中的后端脚本。 它创建于2009年,并具有主要优势-Node.js允许执行异步编程。 它可以处理在一个线程上运行的数千个请求,这意味着无需等待上一个命令完成。 尽管使用Node.js构建的网站所占的比例相对较低(0.4%),但它在开发人员中迅速流行。

开始我们的Node.js与PHP讨论时,我们不可避免地要谈论两种编程语言(Javascript和PHP)的细节。 就语法简单性而言,PHP胜出。 与Node.js相比,与数据库的交互这样的基本操作需要更少和更简单的代码(类似于HTML)。

但是,PHP的简单性并非没有一定的限制。 另一方面,通过使用各种Javascript库对客户端和服务器进行双向异步脚本编写的更多可能性,可以平衡Node.js的某些复杂性。

另外,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构建可扩展的大型应用程序。 仍然存在一个差异,即构建可伸缩应用程序体系结构的效率。

大多数流行的内容管理系统(例如Drupal,Joomla,WordPress)都支持PHP,这使其经常成为构建博客和电子商务Web应用程序的工具。 相反,Node.js有效地用作创建可扩展的动态解决方案的工具,该解决方案可处理大量I / O操作。 尽管付出了更多的努力,但也可以在多核系统上扩展Node。

在处理数据时,Node.js的主要功能是JSON,一方面可以被NoSQL理解,另一方面可以用于在客户端传递数据。 而且,如果早期版本的PHP在JSON方面遇到了一些麻烦,那么这不再是问题,因为自5.2以来,JSON的支持就包含在核心中。

但是,PHP处理数据的主要优点是,它与所有托管服务兼容。 后者与Node.js的实际情况相去甚远,Node.js仅适合于少量托管服务。

PHP和Javascript都是解释性语言,不仅可以用于Web编程,而且可以用于通用脚本。 它们需要使用一定的运行时环境来进行脚本编写(对于Javascript,它可能是浏览器还是服务器,这取决于是用于客户端脚本还是服务器端脚本)。

尽管Node.js由于其异步模型而始终被强调为一种高性能的PHP,但是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构建相同的应用程序。 那么,您如何选择其中之一呢? 我相信,选择Node.js和PHP 2018的最佳方法是选择一种与您用于开发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的讨论似乎不会立即停止,但要记住的重要一点是,只有其中之一可以执行,没有什么独特之处-它们是可以互换的。 但是,您始终可以定位在开发过程中要使用的开发专业知识和技术堆栈级别。

随时关注Twitter上Node.js和PHP之间的实时竞争:http://tagwarriors.lasoft.org/battles/node.js_vs_php/