全方位比较PHP的Node.js的优缺点

建站交流8年前 (2017-05-26)12790

PHP vs Node.js之争由来已久,前者用于动态网页开发,后者是用来编写高性能网络服务器的JavaScript工具包,到底他们如何?InfoWorld测试中心的Peter Wayner日前撰文指出两者的优势所在,不妨一看。

以下为译文:

这是典型好莱坞情节:分道扬镳的两位老朋友间的战斗。摩擦经常开始于一位对另一位不言而喻的领域感兴趣。这部电影的编程语言版本是Node.js的引入将好友情节变成一场旗鼓相当的比赛。PHP和JavaScript,两个曾经一起统治互联网的合作伙伴现在为了开发者心中的份额开始一决雌雄。

在过去,他们的合作关系很简单。JavaScript处理浏览器上的小细节,PHP处理所有的存在于80端口和MySQL的服务器端任务。这个幸福的联合不断支持着因特网的许多关键部分。在WordPress、Drupal和Facebook上,人们几乎不会离开PHP一分钟。

但是,后来一些聪明的孩子发现他能使JavaScript运行在服务器上。突然,我们发现没必要使用PHP构建下一代服务器栈了。一种语言就足够建立Node.js和运行在客户端的框架。对一些人来说,“JavaScript无处不在”变成了咒语。

当然,结局并没有写完。相比较与吹嘘Node.js的纯粹和JavaScript无处不在的简单的程序员,还有另外的程序员,他们对深度代码库和了解PHP的稳定性感到满意。怪老头能够击退服务器端新贵吗?JavaScript能推翻它的老朋友,实现统治世界吗?我们在微波炉里再抓一把爆米花,坐下来瞧瞧。

PHP赢在何处:混合内容的代码

你正在打字,想法随之变成你网站中的文本。你想为进程添加一个分支,根据URL的一些参数,一点if-then语句就会使它看起来漂亮。或者可能你想从数据库中加入文本或数据。用PHP,你能打开PHP魔法标签在几秒内开始编写代码。不需要模板——一切都是一个模板。不需要额外的文件或者煞费苦心的体系结构,因为可编程逻辑能量就在你的指尖。

Node赢在何处:分离的内容

混合内容的代码是拐杖,最终会使你受到损害。当然,在最初的两到三次,混合HTML代码是有趣的。但是不久,你的代码库乱成一团。真正的程序员添加结构,从逻辑层分离出装饰层。对新的程序员来说,代码很容易理解清楚,便于维护。运行在Node.js的框架由这样的程序员所建,他们知道当模型,视图和控制器分离时,生活会变得更好。

PHP赢在何处:深的代码库

网络充满了PHP代码。最受欢迎的构建网站平台(WordPress、Drupal和Joomla)都是用PHP编写。不仅这些开源平台,大部分他们插件也是用PHP编写。网上到处有PHP代码,它等着你去下载、修改和为你所用。

Node赢在何处:新的代码意味着更多现代特征

当然,网上有数以千计的开源PHP文件,但是一些是8岁的WordPress插件希望、祈祷有人下载它们。有谁愿意去花费几个小时、几天或者是几周的时间去倒腾那些已经好几年没有更新的代码?Node.js插件不仅是新的,而且用最新体系的完整知识构建而成。

PHP赢在何处:简单(在一定程度上)

PHP中没有太多的东西:几个处理字符串、数字的变量和基本函数。它除了把数据从80端口移动到数据库并返回,不会做的太多。这是应该做的。现代数据库是个神奇的工具,它能离开重的负载。对不应该复杂工作,PHP的复杂度是适量的。

Node赢在何处:闭包和更多的复杂性

JavaScript可能会有许多把一些人逼疯的小特质。但在大多数情况下,它是一个娱乐现代语法的现代语言,有几个有用的特征,比如闭包。你能容易地重新配置和拓展它,使强大的函数库像jQuery成为可能。你能像传递对象一样四处传递函数。为什么限制你自己呢?

PHP赢在何处:不需要客户端应用程序

所有的关于在浏览器和服务器上使用相同的语言的讨论是好的,但是如果你不需要在浏览器上使用任何语言呢?如果你运送HTML表单中数据呢?浏览器弹出,不会出现被未启动的JavaScript造成的令人头疼的事情和小故障,这个JavaScript试图在浏览器上创建一个来自二十多个web服务调用的页面。纯粹的HTML比其他东西工作更频繁,而PHP是最优化去创建HTML。为何费心在浏览器上用JavaScript呢?在服务器上建立所有操作,避免小手机上的小浏览器重载。

Node赢在何处:与HTML-fat PHP调用相对的瘦服务调用

虽然AJAX-crazy HTML5 Web应用程序有许多移动部件,他们很酷,非常有效。一旦JavaScript代码在浏览器缓存中,新数据沿着线路移动。这没有大量的HTML标记语言,不重复地去下载整个页面。只有数据改变了。如果你愿意投入时间创建一个平滑的浏览器端Web应用程序,这将会有不错的报酬。Node.js是最优化地去传送数据,仅仅只有数据通过Web服务。如果你的应用程序是复杂而又数据丰富的,这将是有效传送的良好基础。

PHP赢在何处:SQL

PHP与MySQL和它的许多变体,比如MariaDB。如果MySQL不全是正确的,还有其他的来自Oracle和Microsoft的伟大的SQL数据库。你的代码用很少的改变就能转换成你的查询。广阔的SQL世界没边界。一些最稳定,成熟的代码与SQL数据库连接,意味着所有力量也能容易地被整合到PHP项目中。它可能不是完美幸福的家庭,但它是大的。

Node.js赢在何处:JSON

如果你必须接入SQL,Node.js的函数库可以做到。但Node.js也有JSON,一个与许多最新NoSQL数据库交互的通用语言。这并不是说你不能为你的PHP栈获得JSON库,但当使用JavaScript时有些流体可使用JSON的简单性去处理。这是从浏览器到Web服务器,再到数据库的语法。冒号和花括号在每处的作用相同,这节约了你的时间。

PHP赢在何处:编码速度

对大多数开发者,编写PHP Web应用程序感到更快:没有编译器,没有部署,没有JAR文件或者预处理器——仅仅是你喜欢的编辑器和一些PHP文件目录。你的进度会不同,但就一起迅速确定项目而论,PHP是一个很好用的工具。

Node.js赢在何处:原始速度

编写JavaScript代码的过程中,当你在计算花括号和圆括号时,它有点难,但是编写成功后,你的Node.js代码可以飞。它的回调机制很巧妙,因为能帮你节约运行线程的时间。核心被建好,旨在为你做一切,这不是每个人想要的吗?


我不觉得node.js有什么不适合新手的,毕竟你从0开始学PHP一样要对网页编程有个学习的过程,所以从上手程度来说两者几乎等价。一样要了解MVC,数据库连接等等。
直接比较一下上手时的优劣,你可以自己衡量一下
Node.js
优点:js语法,对会用js的人来说看懂代码不难。

          简化了配置服务器的过程,自带一个web服务器,不像php要安装配置apache
缺点:相比PHP学习资料较少
PHP
优点:学习资料多,框架多,工具包多
缺点:对于语法有个熟悉过程
我觉得这应该是你搭的第一个网站,语言的重要性其实不那么大,优缺点可能在你学习的过程中也不会体现,而且都是一些外在外因。当然你也可以这么考虑,
现在搞PHP的一抓一大把,
而且主要以轻量级公司用的居多。node被很多大公司所推崇,越早接触机会机会越多。

推荐使用php,功能一多node.js就短板了。
node.js是用来快速开发网关类的(并发量大,处理量小,大部分都只是后端的一个负载均衡)。当node.js上了各种框架,还要负责生成页面后,就有点得不偿失了。简单网站是可以,但当页面变得比较复杂后,就不怎么合适了。
node.js是异步单线程的,只要一个环节卡住了,整个系统都会被卡住,并且没有那么多人有精力把所有的程序都异步化,特别是本来运算量就大的东西,异步了也没什么用。
Node.js 是一个程序,能够完成 Apache 能够完成的所有任务(借助一些模块), 而且,作为一个可以将其作为基础进行构建的可扩展 JavaScript 平台,Node 还能完成更多的任务。
node.js比php难多了,但node.js和javascript互通,让程序员同时会前/后台程序开发。如果新人要学PHP做后台开发,要想会前台程序开发,除了学PHP,还要再学javascript,相比之下,无疑是增加了学习成本。


你会javascript,肯定学node.js更快一些,因为node.js就是运行在javascript环境下的。此外没有什么是不适合新手的,几乎每一种语言都希望自己被普及,因此都是被设计得让人容易理解和接受的。
和php比,node.js有优势也有劣势。据google自己说,node.js比php、python等都快,尤其在处理大量并行访问的时候。因此如果你要开发的网站,在同一时间会有很多人访问,那么选node.js是不错的;劣势就是太年轻,没有php普及,也许还潜藏着很多问题,毕竟php发展到今天,历经多个版本的修正、无数服务器的检验,而且教程和例子比node.js要多的多。
node.js还有一个小优势,因为都是javascript环境,可以更轻松的发挥javascript动态编程的特点,建立服务器和浏览器之间的动态应用(注意,php也是可以的,只不过在编程的时候程序员要时常切换语言模式,稍微麻烦一些)。
所以,选哪个主要看你的网站是什么样子的。一般的网站,选php就行了。游戏网站,或客户数非常多的应用网站,可以选node.js。


标签: node.jsphp

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。