《PHP编程:简单谈谈PHP vs Node.js》要点:
本文介绍了PHP编程:简单谈谈PHP vs Node.js,希望对您有用。如果有疑问,可以联系我们。
相关主题:node.js web开发
网络正在处于一个日新月异的发展时代.服务器端开发人员在选择语言的时候非常困惑,有长期占主导地位的语言,例如C、Java和Perl,也有专注于web开发的语言,例如Ruby、Clojure和Go.只要你的项目运行良好,你的选择就显得没有那么重要了.
但是如何让这些新的web开发人员做出一个正确的选择呢?
我不希望展开一场PHP、NodeJs两大阵营之间的战争,我将会对比这两种语言所在领域的发展状况:
PHP
Rasmus Lerdorf在1994年创造出了PHP.它是由安装在web服务器(Apache、Ngix)上的组件运行的.
PHP代码可以和HTML混合到一块. 对于初学者就能很快写出很有价值的代码,这并不必要太多的练习. 这让PHP变得越来越流行, 现在全球百分之八十的服务器上都在运行着PHP.全球四分之一的网站都在用的一个内容管理系统--WordPress,就是用PHP写的.
Node.js
Ryan Dahl在2009年创造了Node.js.它是基于Google的V8 JavaScript解释引擎(在Chrome浏览器里它负责执行客户端的JavaScript代码).与其它语言不同的是Node.js内置了处理网络哀求和响应的函数库,所以你不需要单独的服务器(Apache、Ngix)或者其他依赖.
Node.js虽然很新但是很快就获得了极大的追捧.在很多的大公司都有在使用,例如:Microsoft,Yahoo,LinkedIn和PayPal.
我们所钟爱的C#、Java、Ruby、Python、Perl、Erlang、C++、Go、Dart、Scala、Haskell等等,它们呢?
如果文章里边比拟了如上所有语言的各种参数,文章将会非常长,你还会读它么?你期望一个程序员了解所有的程序开发语言吗?这显然是不可能的.我主要对PHP和Node.js做了比拟,主要原因如下:
首先它们之间值得比拟.两者都是开放源码,都是致力于web开发,并且都可用于相似的项目.
PHP已经发布了很久了,但是Node.js才刚刚兴起,并受到越来越多的关注.难道PHP的程序员应该相信Node.js的宣传?应该考虑转换语言?
我了解,热爱编程语言,自从20世纪90年代之后我就一直使用PHP和JavaScript,并且也有几年的Node.js的经验.除此之外我也涉猎了其他的技术,但是在这里我还不能对他们作出客观评价.
另外,对多少语言做比较不重要,因为总会有某些地方的某些人埋怨我没有提到他们语言.
SitePoint上的角逐
程序员会花费很多时间来提升他们本身的编程能力.一些人有编程语言之间的延伸能力,但是这些达到更高层次的人根据很多的因素来做出他们本身的选择.从主观方面来说,你将会推进并且捍卫你的技术决策.
SitePoint Smackdowns并没有采取“选择适合你自己的,朋友”这样的观点.我将会根据个人的经验、要求和爱好提出建议.你可能不会同意所有的我所说的所有观点,这并不重要,重要的是你的意见将会给其他人做出更加明智的选择.
评估办法
下面将会对 PHP 和 Node.js 进行十个轮次的比拟.每个回合都会考量可以应用到任意 web 技术的常见的开发挑战.我们不会太深入讨论细节;很少有人会关心随机数生成器或数组排序的价值.
赢得最多回合的将会是优胜者.准备好了吗?开始比力吧......
第一轮:起步
创建一个“Hello World” web 页面有多快呢?在 PHP 中:
<?php echo 'Hello World!'; ?>
这段代码可以放置在可以被 PHP 引擎解析的任意文件中--通常,是以 .php 为后缀的文件.在浏览器中输入 URL 跳转到文件即可.
不可否认,这不是全部.这段代码只能运行于安装了 PHP 的 web 服务器(PHP 有一个内置的服务器,尽管如此,最好还是使用一个更健壮的服务器).大多数操作系统提供了服务器软件,如 windows 上的 IIS,Mac 和 Linux 上的 Apache,尽管它们必要启动和配置.通常使用提前构建的安装程序,如 XAMPP或虚拟机镜像(如 Vagrant).一种更简单的方式:上传你的文件到任意的 web 主机.
对比而言,安装 Node.js 轻而易举.你可以 下载安装程序 或者 使用担保理器. 接下来让我们在 hello.js 中创建 web 页面:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World!'); }).listen(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 在本轮轻易胜出,她有大量的指南和二十年的 Q&A.无论你想做什么,总会有人在你之前已经面对过同样的问题.
Node.js 拥有很好的文档,但是更加年轻,能提供的赞助较 PHP 也少.JavaScript 在市面上的时间和 PHP 一样久,但是主要的赞助都是针对浏览器开发的,那基本没啥赞助.
第三回合: 语言语法
声明与结构是不是符合逻辑而且简单好用?
不像一些语言跟框架,PHP 不会限制你按特定的方式编写,具体怎么搞随你.你可以从几行的程序开始,然后添加些办法,进而写一些简单的 PHP4 模式的对象,最后编写优雅的面向对象的 MVC 模式 PHP5+ 的应用.你的代码开始可能比较混乱,但也能工作,而且会随着理解的深入越写越好.
PHP 的语法在版本间可能略有调整,但是向后兼容一般都做得很好.但不幸的是,这也导致了一个问题:PHP 很混乱.例如,怎么统计一个字符串中字符的个数?是 count?str_len? 还是 strlen?亦或 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 不是这样.
第四轮:开发工具
两种技术都有一些很好的编辑器,集成开发环境,调试器,验证器和其他工具.我认为这是平局,但是这里有一些工具给 Node.js 些许优势:NPM-担保理器. NPM 允许你安装和管理依赖,设置配置变量,定义脚本和其他.
PHP 的 Composer 项目受 NPM 激发,在有些方面更强.但是,PHP 在默认情况想不提供,活动库较小,在社区的影响更小.
Grunt 和 Gulp 之类革新了开发办法的构建工具的壮大,NPM 也有一部分功劳.有时候 PHP 开发者也许想要/需要安装 node.js,这不是倒退.
第五轮:环境
技术可以在哪使用和部署?支持哪些平台和生态系统?网页开发者经常需要开发一些并不完全针对网页的应用,好比构建工具,迁移工具,数据库转换脚本等.
PHP 有方法开发桌面应用和命令行工具,但是你不会使用他们.本质上,PHP 是一个服务端技术,他很擅长该领域,但是很少延伸到这之外.
若干年前,JavaScript 被认为限制很多,有一些边沿技术,但是他的主战场还是浏览器.Node.js 已经改变了这一感觉并井喷出了很多 JavaScript 项目,你可以在任何地方使用 JavaScript:浏览器,服务器,终端,桌面甚至嵌入式系统,这使得 JavaScript 无处不在.
第六轮:集成
开发技术很受限制,除非他们能与数据库和驱动集成.PHP 在这方面很强,PHP 面世已经很多年,他的扩展使他能和拥有主流或冷门的 API 的服务器直接通讯.
Node.js 正在迎头直追,但是你也许会为某些老旧,冷门的技术寻找成熟集成组件而头疼.
第七轮:托管和部署
部署你绚丽新应用到在线网页服务器有多容易?这是 PHP 的另一次完胜.随机联系某个网页托管公司你可以找到对主要的 PHP 支持,也许还免费附送 MySQL.对于沙盒,PHP 被认为更简单,有风险的扩展可以被禁用.
Node.js 是个不同的野兽,服务端的应用永远运行.你必要一台物理/虚拟/云或定制的服务器环境,最好有 root 权限,这对有些服务器来说遥不可及,特别是那些共享的服务器,你有可能让整台服务器宕机.
Node.js 托管将会变得简单,但是我认为他永远没法像 FTP 上传一些 PHP 文件那么便利.
第八轮:性能
PHP 很勤快,有很多项目跟选项可以使它跑得更快.即使那些对性能要求很严苛的 PHP 开发者也几乎不会担心速度问题, 但是 Node.js 性能通常更好一些. 当然,性能很大程度上决定于开发团队的经验以及是否上心, 但是 Node.js 还是有如下几条优势的:
更少的依赖
所有对 PHP 应用的哀求都必须经过一个 WEB 服务器的路由,来启动 PHP 的解释器运行 PHP 代码.Node.js 不需要这些依赖, 而且你基本一定会使用一个带服务器的框架,像 Express,他很轻量,很好的扮演你应用的一部分.
更小更快的解释器
Node.js 的解释器比 PHP 的更小更灵活. 他并不受旧版语言遗留兼容问题的拖累,而且 Google 在 V8 引擎性能改善上出了大力.
应用永久在线
PHP 遵循标准客户端-服务端模型. 每个页面哀求都会初始化应用; 你读取配置参数、连接数据库、读取信息、渲染 HTML.Node.js 应用持久运行,只需要启动一次.例如,你可以创建一个单独数据连接对象,然后所求哀求一起复用.公认的,PHP 也有一些途径来实现,比如使用 Memcached ,但是这已经不是语言的标准特性了.
事件驱动,无阻塞 I/O
PHP 跟其他多数服务端语言采用阻塞执行的模型. 当你执行一个命令,好比从数据库取数据,那么必须等这个指令执行完成后,才会执行下面的内容. Node.js 通常不会等的. 取而代之的是, 你需要提供一个回调函数,这个函数当指令执行完后会被调用一次.例如:
这个例子中, 控制台会先输出‘finished',然后输出‘N records returned',因为 process 函数是所有数据返回的时候才被调用的. 换句话说,当解释器在其它进程处理的时候可以干些别的事情.
注意情况比拟复杂,还有几个警告:
Node.js/JavaScript 只能在单线程上运行,但是大多数 web 服务器都是多线程,而且并发的处理哀求.
一个用户长时间运行的 JavaScript 处理会阻止其它用户的代码执行,除非拆分任务或者使用Web Workers.
基准测试是主观的和有缺陷的;可以找到一些例子 Node.js 比拟好,而一些相对的例子 PHP 比拟好 .程序员只是在尝试证明他们的信仰!
书写异步的事件驱动的代码非常复杂,非常有挑战性.
我只能从我的经验来讲: 我的 Node.js 应用要明显比 PHP 的同等应用要快.你的可能不是,但是不试是永远不会知道的.
第九轮:开发者激情
这会超出”常见网页开发挑战“这样的目标,但是这很重要.如果你恐惧每天写代码,那你无所谓哪门语言更好.
很难为此做出比拟但是一些 PHP 开发者对 PHP 这门语言很有激情.你最近一次读到让你走心的 PHP 文章或幻灯片是什么时候?也许已无需再说?可能是更低的曝光度?或者我没找对地方?PHP7 有一些新的功能,但是该技术已经原地踏步很多年了,虽说如此,很少有开发人员对PHP发牢骚.
JavaScript 分离了社区,有人爱也有人恨,一些程序员在中间犹豫不决,经管如此,对 Node.js 的反馈大多积极,她正处于风口浪尖,一部分原因是因为她很新,赞誉不必定持续.目前,Node.js 赢得本轮.
第十轮:前景
您选择采用哪种服务端语言并不重要;即使她不再被更新也会照样继续工作(yay ColdFusion!)尽管使用量上趋于稳定但是很多人依然使用 PHP,我打包票她还能再坚挺二十年.
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培训学院每天发布《PHP编程:简单谈谈PHP vs Node.js》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/9455.html