简单说说PHP vsnode.js
网络正处于一个飞速发展的时代。服务器端开发人员在选择语言时非常困惑,比如长期以来占主导地位的C、Java和Perl语言,以及那些专注于web开发的语言,比如Ruby、Clojure和Go。只要你的项目运行良好,你的选择就不那么重要了。
但是这些新的网络开发者如何才能做出正确的选择呢?
我不想在PHP和NodeJs之间挑起战争。我将比较这两种语言在各自领域的发展:
服务器端编程语言(Professional Hypertext Preprocessor的缩写)
拉斯马斯勒德尔夫在1994年创建了PHP。它由安装在网络服务器(Apache、Ngix)上的组件运行。
PHP代码可以和HTML混合使用。初学者可以快速编写有价值的代码,不需要太多练习。这使得PHP越来越流行,现在全球80%的服务器都在运行PHP。- WordPress,世界上四分之一的网站使用的内容管理系统,是用PHP编写的。
Node.js
Ryan Dahl在2009年创建了Node.js。它是一个基于Google的V8 JavaScript解释引擎(负责在Chrome浏览器中客户端执行JavaScript代码)。与其他语言不同,Node.js内置了处理网络请求和响应的函数库,因此不需要单独的服务器(Apache、Ngix)或其他依赖项。
虽然Node.js非常新,但它很快获得了巨大的普及。它被许多大公司使用,如微软、雅虎、领英和贝宝。
我们最喜欢的C#、Java、Ruby、Python、Perl、Erlang、C、Go、Dart、Scala、Haskell等。他们怎么办?如果在文章中比较以上语言的所有参数,文章会很长。你还会看吗?你希望程序员知道所有的编程语言吗?这显然是不可能的。我主要比较PHP和Node.js,原因如下:
首先,它们值得比较。两者都是开源的,都致力于web开发,可以用于类似的项目。
PHP发布已经很久了,但是Node.js才刚刚出现,受到了越来越多的关注。PHP程序员应该相信Node.js的宣传吗?我们应该考虑换种语言吗?
我知道我喜欢编程语言。我从90年代就开始使用PHP和JavaScript,有几年Node.js的经验,除此之外,其他技术我也有涉猎,但在这里无法客观评价。
再说了,有多少种语言比较并不重要,因为总会有一些人在一些地方抱怨我没有提到他们的语言。
SitePoint上的竞争
程序员花很多时间提高自己的编程能力。有些人有能力扩展编程语言,但是那些达到更高水平的人会根据很多因素做出自己的选择。主观上,你会推进和捍卫你的技术决策。
SitePoint Smackdowns并不采取“选择自己的朋友”的观点。我会根据我的个人经验、要求和喜好提出建议。你可能不同意我说的所有观点也没关系。重要的是你的观点会让别人做出更明智的选择。
评估程序
下面将对PHP和Node.js进行十轮比较。每一轮都将考虑适用于任何网络技术的共同发展挑战。细节我们就不深入讨论了;很少有人关心随机数生成器或数组排序的价值。
胜者将赢得最多回合。你准备好了吗?让我们开始比赛。
第一轮:开始
创建“Hello World”网页的速度有多快?在PHP中:
?php回声'你好世界!';这段代码可以放在任何可以被php引擎解析的文件中,通常是一个带后缀的文件。PHP。在浏览器中输入网址并跳转到文件。
诚然,这还不是全部。这段代码只能在安装了PHP的web服务器上运行(PHP有内置的服务器,但最好使用更健壮的服务器)。大多数操作系统都提供服务器软件,例如windows上的IIS、Mac上的Apache和Linux,尽管它们需要启动和配置。通常,使用预构建的安装程序,如XAMPP或虚拟机映像,如游民。一个更简单的方法:上传你的文件到任何网络主机。
相比之下,安装Node.js轻而易举。您可以下载安装程序或使用软件包管理器。接下来,让我们在hello.js中创建一个网页:
var http=require(' http ');函数(req,res) { res.writeHead(200,{ ' Content-Type ' : ' text/plain ' });res.end('Hello World!');}).听(3000,' 127 . 0 . 0 . 1 ');在浏览器中访问http://127.0.0.1:3000/之前,需要在终端输入node hello.js启动应用。通过上面的五行代码,我们创建了一个小型的web服务器,这是令人惊讶的,但是对于有强大客户端JavaScript经验的人来说很难理解。
PHP在概念上更简单,所以这一轮它赢了。稍微了解PHP声明的人可以开发一些有用的东西。PHP有更多的软件依赖,但是对于初学者来说,PHP的概念并没有那么麻烦。
理解JavaScript和开发Node.js应用程序是两回事。Node.js的开发方法不同于大多数服务器端技术,所以需要理解一些相当复杂的概念,比如关闭和回调函数。
第二轮:帮助和支持
没有官方文档和资源(课程、论坛、栈溢出)的帮助,你必然会举步维艰。PHP本轮轻松获胜。二十年来,她有很多向导和质量保证。不管你想做什么,总会有人在你面前遇到同样的问题。
Node.js有很好的文档,但它比PHP更年轻,能提供的帮助也更少。JavaScript上市的时间和PHP一样长,但主要的帮助是为浏览器开发的,这基本上没有帮助。
第三轮:语言语法
声明和结构是否合乎逻辑且易于使用?
与某些语言和框架不同,PHP并不限制你以特定的方式写作。可以从几行程序开始,然后添加一些方法,再写一些PHP4模式的简单对象,最后写MVC模式PHP5的优雅应用。你的代码刚开始可能会比较混乱,但是也会有效果,而且随着理解的深入会写得越来越好。
PHP的语法可能会在不同版本之间稍作调整,但向后兼容性通常做得很好。不幸的是,这也导致了一个问题:PHP令人困惑。例如,如何计算字符串中的字符数?算吗?str_len还是斯特伦?还是mb_strlen?PHP有上百个函数,命名规则也不完全一致。您可以尝试在不检查文档的情况下编写几行代码。
JavaScript相对简单,只有几十个核心声明。然而,语法经常被开发人员喷,因为它的原型对象模型看起来平易近人,但事实并非如此。以及各种数学错误(0.1 0.2!=0.3)和类型转换的混乱(' 4' 2=='42 '和' 4'-2==2)也引起了许多抱怨,但这些情况在世界上很少引起任何问题,大多数语言都有这样的借口。
PHP有它的优势,但我这次是靠Node.js赢的,原因如下:
JavaScript是世界上最难理解的语言——然而,当你顿悟的时候,你会发现其他语言太笨拙了。
JavaScript代码比PHP简单。例如,您不再需要绕过JSON,—— UTF-8也不需要
全栈工程师可以在客户机和服务器上使用JavaScript。大脑不需要来回切换。
对JavaScript的深刻理解会让你更想使用它,但PHP不会。
第4轮:开发工具
这两种技术都有一些好的编辑器、集成开发环境、调试器、验证器和其他工具。我认为这是一个平局,但是这里有一些工具给Node.js一些优势:NPM包管理器。NPM允许您安装和管理依赖项,设置配置变量,定义脚本等。
PHP的Composer项目受NPM启发,在某些方面更强。但是PHP默认不可用,活动库较小,对社区影响较小。
NPM还对咕噜和大口等建筑工具的发展做出了贡献,这些工具彻底改变了开发方法。有时候PHP开发人员可能想要/需要安装node.js,这不是退步。
第五轮:环境
技术可以在哪里使用和部署?支持哪些平台和生态系统?网页开发人员经常需要开发一些不完全特定于网页的应用程序,如构建工具、迁移工具、数据库转换脚本等。
PHP可以开发桌面应用程序和命令行工具,但是你不能使用它们。从本质上讲,PHP是一种服务器端技术。他擅长这个领域,但很少超越它。
几年前,人们认为JavaScript有很多局限性和一些边缘技术,但它的主战场是浏览器。Node.js改变了这种感觉,产生了很多JavaScript项目。你可以在任何地方使用JavaScript:浏览器、服务器、终端、桌面甚至嵌入式系统,这使得JavaScript无处不在。
第6轮:整合
开发技术是有限的,除非它们能够与数据库和驱动程序集成。PHP在这方面非常强大。PHP已经存在很多年了,它的扩展使它能够直接与使用主流或冷门API的服务器进行通信。
Node.js正在迎头赶上,但是您可能会为一些旧的和不受欢迎的技术找到成熟的集成组件而头疼。
第7轮:托管和部署
将华丽的新应用程序部署到在线web服务器上有多容易?这是PHP的又一次胜利。随机联系一家网络托管公司,可以找到主要的PHP支持,可能还会免费包含MySQL。对于沙盒,PHP被认为更简单,可以禁用有风险的扩展。
Node.js是另一种野兽,服务器上的应用程序总是在运行。你需要一个物理/虚拟/云或者定制的服务器环境,最好有根权限,这对于一些服务器来说是遥不可及的,尤其是那些共享服务器,你可能会拖垮整个服务器。
托管Node.js会很容易,但我认为它永远不会像通过FTP上传一些PHP文件那样方便。
第八轮:表现
PHP很勤奋,有很多项目和选项可以让它运行得更快。即使是对性能有严格要求的PHP开发人员也几乎不用担心速度,但Node.js通常性能更好。当然,性能在很大程度上取决于开发团队的经验以及是否用心,但是Node.js还是有以下优势的:
较少依赖
对PHP应用程序的所有请求都必须通过网络服务器来路由,以启动PHP解释器来运行PHP代码。Node.js不需要这些依赖关系,你基本上会使用一个带有服务器的框架,比如Express,它非常轻量级,在你的应用程序中扮演了很好的角色。
更小更快的翻译
Node.js的解释器比PHP更小更灵活。他并没有被旧语言留下的兼容性问题拖累,谷歌也为提高V8引擎的性能付出了巨大的努力。
申请永久在线
PHP遵循标准的客户机-服务器模型。每个页面请求都会初始化应用程序;您可以读取配置参数、连接到数据库、读取信息和呈现HTML。应用程序Node.js持久运行,只需要启动一次。例如,您可以创建一个单独的数据连接对象,然后一起重用这些请求。诚然,PHP有一些实现它的方法,比如使用Memcached,但这不再是语言的标准特性。
事件驱动的、非阻塞的输入/输出OPPP和大多数其他服务器语言都采用阻塞执行模型。当您执行命令时,例如从数据库中提取数据,您必须等待命令被执行,然后才能执行以下内容。Node.js通常不会等待。相反,您需要提供一个回调函数,该函数将在指令执行后被调用一次。例如:
在本例中,控制台将首先输出“完成”,然后输出“返回的记录”,因为只有当所有数据都返回时,才会调用process函数。换句话说,解释器可以在其他进程处理它的时候做其他事情。
请注意,情况很复杂,有几个警告:
Node.js/JavaScript只能在一个线程上运行,但是大多数web服务器都是多线程的,并发处理请求。
一个用户长时间运行的JavaScript处理将阻止其他用户的代码执行,除非任务被拆分或使用Web Workers。
标杆是主观的,有缺陷的;你可以找到一些例子,Node.js更好,而一些相对的例子,PHP更好。程序员只是想证明自己的信念!
编写异步事件驱动的代码非常复杂和具有挑战性。
我只能从我的经验告诉大家,我的Node.js的应用明显比PHP的等价应用要快。你的可能不是,但如果你不尝试,你永远不会知道。
第九轮:开发者激情
这将超过“常见的web开发挑战”的目标,但它非常重要。如果你害怕每天写代码,你就不在乎哪种语言更好。
很难比较,但是一些PHP开发人员对PHP充满热情。上一次看PHP文章或幻灯片让你担心是什么时候?可能没必要说吧?会不会是曝光率更低?还是我没找对地方?PHP7有一些新的功能,但是这项技术已经停滞了很多年。即便如此,也很少有开发人员抱怨PHP。
JavaScript分隔了社区,有人爱有人恨,也有程序员在中间犹豫不决。不过,对Node.js的反馈大多是正面的,她走在前列,部分原因是她是新人,好评可能不会长久。目前Node.js已经赢了这一轮。
第10轮:前景
选择哪种服务器语言并不重要;即使她不再更新,她也会继续工作(耶ColdFusion!)虽然用法趋于稳定,但很多人还是用PHP,我可以保证她还能再强20年。
Node.js迅速崛起。它提供了一种现代化的开发方法,使用与客户端开发相同的语法,并支持HTML5革命性的功能,例如网络套接字和服务器发送事件。虽然关于语言的分叉功能存在一些争议,但是Node.js的使用正在呈指数级增长。
Node.js势必会蚕食PHP的市场份额,但我不认为它能完全取代它。这两项技术都有光明的未来。我宣布这轮比赛结束。
最后赢家
最终得分:Node.js赢了5轮,PHP赢了4轮,一轮平手。我以为我会倒向一边,但结果比我预期的更温和。
Node.js有一定的学习曲线,对于初学者来说并不理想,但她赢得了比赛。而且,如果你是一个喜欢这种语言的可靠的JavaScript程序员,Node.js也不会让你失望。她比较时尚,提供了自己的网页开发经验,所以你不会错过PHP。
但是不要小看PHP。PHP还活着。你不应该仅仅因为Node.js更快、更新或者更新潮,就跟不上Node.js的潮流。PHP很容易学习,并且仍然支持专业的编程技能,这有助于它无处不在并且易于开发。即使是死忠的Node.js开发者也不得不考虑在简单的网站和应用中使用PHP。
我的建议是:评估选项,根据自己的需要选择一种语言,这比像这篇这样的“比较”文章可靠得多。
以上就是本文的全部内容,希望大家喜欢。
版权声明:简单说说PHP vsnode.js是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。