阅读更多

0顶
2踩

编程语言
【编者按】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.js赢在何处:分离的内容

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

PHP赢在何处:深的代码库

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

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

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

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

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

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

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

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

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

Node.js赢在何处:与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代码可以飞。它的回调机制很巧妙,因为能帮你节约运行线程的时间。核心被建好,旨在为你做一切,这不是每个人想要的吗?
原文链接:PHP vs. Node.js: An epic battle for developer mind share
来自: CSDN
0
2
评论 共 3 条 请登录后发表评论
3 楼 fnet 2015-01-24 16:18
java呢?就这样被赤裸裸忽略了。。。
2 楼 wchaowu 2015-01-23 09:09
没有可比性,各有优势,node.js 推荐微博http://www.weibo.com/wchaowu
1 楼 ykssky 2015-01-22 22:52
看了原文, 同意 "This article is highly inaccurate. "
这样的文章没必要转了...

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 多方位解析PHP vs Node.js之争

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

  • Node.JS 学习路线图

    Node.JS 学习路线图 来源:张丹 发布时间:2014-06-26 阅读次数:26231  从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前...

  • php功能大马加密乱码,php大马加密工具 phpTrace:奇虎360开源的PHP脚”的相关知识...

    phpTrace:奇虎360开源的PHP脚本分析工具问题:phpTrace:奇虎360开源的PHP脚本分析工具回答:phpTrace是奇虎 360开源的一款和分析PHP脚本的工具。如果开发者用过strace的话,则可能很容易想到phpTrace到底实现了...

  • JavaScript 高级程序设计(第3版)

    ECMAScript 5 和 HTML5 在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为 JavaScript 增添了很多适应未来发展的新特性。《JavaScript 高级程序设计(第3版)》这一版除增加5章全新内容外,...

  • 给JavaScript 初心者的ES2015 实战

    原文是http://lifemap.in/es2015-in-action/,对于Javascript ES6 介绍的比较全面。前言历时将近6年的时间来制定的新ECMAScript标准ECMAScript 6(亦称ECMAScript Harmony,简称ES6)终于在2015年6月正式发布。自从...

  • PHP进阶面试题

    比较一下php和go的区别? Go是一种静态类型语言。...由于多线程技术提高了Golang的效率,减少了部署规模,减少了内存占用量, Golang降低了企业的间接成本。 什么是守护进程? 守护进程(daemon)是一种特殊的进程,它

  • 内存数据库选型之 Redis 与VoltActiveData比较

    近年来,随着动态随机存储 器 (DRAM) 容量的上升和单位价格的下降,使大量数据在内存中的存储 和处理成为可能,越来越多的内存数据库管理软件 (IMDB) 逐渐成熟。 在金融、通信行业的业务场景中,内存数据库的运用...

  • 给 JavaScript 初心者的 ES2015 实战

    前言 ...自从上一个标准版本 ES5 在 2009 年发布以后,ES6 就一直以 新语法 、 新特性 的优越性吸引著众多 JavaScript 开发者,驱使他们积极尝鲜。 虽然至今各大浏览器厂商所开发的 Java

  • go技术文章梳理(2018)

    MySQL PK MongoDB:多文档事务支持,谁更友好? https://mp.weixin.qq.com/s/dloujdsOHy87cPQkY2oGzg gocn_news_2018-12-19 1. Go 1.12beta1发布 https://groups.google.com/forum/#!topic/golang-nuts/cYlIdVjpPrQ...

  • 工作中使用到的单词(软件开发)_2023_0316备份

    MyBatis 之 Hello World_sun0322-CSDN博客 Spring Boot,Sprint Batch 学习_sun0322-CSDN博客 SFDC 外部系统连接SFDC,获取SFDC侧的数据_sun0322-CSDN博客 ■沪江日语 在线翻译_英语_日语_多语种翻译_沪江小D在线...

  • 工作中使用到的单词(软件开发)

    MyBatis 之 Hello World_sun0322-CSDN博客 Spring Boot,Sprint Batch 学习_sun0322-CSDN博客 SFDC 外部系统连接SFDC,获取SFDC侧的数据_sun0322-CSDN博客 ■沪江日语 在线翻译_英语_日语_多语种翻译_沪江小D在线...

  • 脑语言v0.5.8 2500令【单字编程】

    这是脑语言v0.5.8版的2500个单字(也称为“令”与“一令”),通过【单字编程】(并不仅是中文编程,而是混合英文关键字,但以单字为...我在做脑语言【单字编程】系列的教程,先是《JavaScript单字编程》欢迎参与! ...

  • 老男孩上海校区Python面试题

    1. set:set集合,在Python中的书写方式为{},集合与之前列表、元组类似,可以存储多个数据,但 2. 是这些数据是不重复的。集合对象还支持union(联合), intersection(交), difference(差)和 3. sysmmetric_difference...

  • linux常用命令-part2

    Ubuntu,Fedora,Debian,CentOS中文怎么发音 有奔头, 费德勒, 迪扁, 桑托斯。 乌版图 菲朵拉 德槟 森头斯 ...================================ ...使用find和wc命令统计代码行数 ... -name "*.js" | xargs`

  • linux常用命令-part3

    kilobyte(千字节),常写作KB或K,是一种资讯计量单位,现今通常在标示内存等具有一般容量的储存媒介之储存容量时使用。 1KB = 1,000Byte 1MB = 1,000KB 1GB = 1,000,000(106)KB 1TB = 1,000,000,000...

  • 攻防启示:Chromium组件风险剖析与收敛

    其实,早在 Microsoft 2018 年宣布 Windows 的新浏览器 Microsoft Edge 将基于 Chromium 内核进行构建之前,伴随互联网发展至今的浏览器之争其实早就已经有了定论,Chromium 已然成为现代浏览器的事实标准,市场...

  • 微信小程序资源汇总

    小程序之争:微信高开低走,支付宝却给对手做了嫁衣 2017-10-11 开发适用于微信小程序的跨平台图表库:part1 2017-10-10 Real–微信小程序开发之路(三) 2017-10-10 以微信小程序为例学习网站开发平台API...

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

  • 基于java的驾校收支管理可视化平台的开题报告.docx

    基于java的驾校收支管理可视化平台的开题报告

  • 原木5秒数据20241120.7z

    时间序列 原木 间隔5秒钟 20241120

Global site tag (gtag.js) - Google Analytics