PHP与Node.js:一个史诗般开发者的分享

两个老朋友之间最终以战斗的方式分开,这是经典的好莱坞情节,通常,摩擦开 始于一个人对另一个人的说话不感兴趣时。在编程语言这部电影中,Node.js的引入使得朋友轻易地变成了怨恨对手:PHP和JavaScript,两个 合作伙伴曾经一起统治互联网,但现在却彼此分开。

过 去的合作关系很简单。JavaScript处理浏览器上的细节,而PHP管理80端口和MySQL之间的所有服务器端任务。这是一个幸福的联盟,支持互联 网的许多关键部分。在WordPress,Drupal和Facebook之间,人们几乎在网络上的每一分钟都有PHP的参与。

然后一些聪明的开发者发现JavaScript可以用在服务器上。突然,没有必要使用PHP来构建服务器堆栈了。一种语言既可以构建Node.js,也是客户端运行框架所需要的。“JavaScript无处不在”成为了一些人的口头禅。

从那时起,两个平台都不断地扩大和改进。Node.js的开发人员现在可以选择一个不断扩充的优秀框架集合:Express,Angular,Meteor等。列表很长,最大的问题是选择最优秀最合适的。

PHP也加快了速度,zippy即时编译器提供的答案比以前更快。现在的PHP 7.0和HHVM都为Chrome和Node.js提供了相同的即时优化引擎V8。不仅如此,HHVM还有一个Hack,它对诸如lambda,泛型和集合等复杂编程特性提供完全支持。

有人称赞Node.js和JavaScript,也有人对PHP的代码基础和稳定性感到满意。JavaScript还会和它的老朋友一起实现统治世界吗?

PHP特点:混合代码

如果你想添加一个分支,一个if-then语句就可以,看起来也很漂亮。或者也许你想混合文本或数据库中的数据。使用PHP,打开PHP标签,几秒钟就可以开始编写代码。不需要模板,因为一切都是模板!不需要额外的文件或精心设计的架构,只需要你的指尖编程。

Node特点:代码分离

混 合代码可能最终不是什么好事。虽然,这件事很有趣,但很快你的代码就会变的逻辑混乱。真正的程序员会添加结构并将基础层与逻辑层分离。这使代码对新程序员 来说更加清晰,易于理解和维护。在Node.js上运行的框架由程序员构建,程序员知道模型,视图和控制器分开是最好的。

PHP特点:深度代码库

网络中充满了PHP代码。用于构建网站(WordPress,Drupal,Joomla)的最流行的平台是用PHP编写的。不仅平台是开源的,大多数的插件也是如此。PHP代码无处不在。

Node特点:更新的代码意味着更现代的功能

当然,有成千上万伟大的开源PHP文件,但谁想要花几个小时,几天或几个星期的时间研究几年没有更新的代码呢?Node.js插件不仅更新,而且是建立在最新的架构方法上的。它们由程序员构建,程序员知道现代网络应用程序应将大部分智能推送给客户端。

PHP特点:简单(排序)

PHP没有太多的东西:一些变量和基本的函数,用于编译字符串和数字。除了将数据从80端口移动到数据库和回来之外做的不多,PHP是一个不复杂的工作所需的。

Node特点:复杂的闭包

JavaScript可能有许多小的特性,但在大多数情况下,它是一种现代语言,运行现代语法和一些有用的功能,如闭包。你可以很容易地重新配置和扩展它,使强大的库比如jQuery成为可能,你可以传递类似对象的函数。

PHP特点:新代码正在建立

如 果你是一个程序员,想要做的不仅仅是与数据库交互,而是对结果进行格式化,现在你可以使用PHP做很多事情。Facebook的HHVM添加了对Hack 的支持,Hack是一个完整的语言,充满了类型注释,泛型和lambda表达式等现代特性。使用这个会限制代码只运行在HHVM上。

Node特点:几十种语言选项

如果PHP用户乐意访问Hack,他们应该考虑迁移到Node.js世界,因为许多主要语言可以交叉编译以在JavaScript中运行,如Java,C#或Lisp和Scala,OCaml和Haskell。

PHP特点:无需客户端应用程序

在浏览器和服务器上使用相同的语言是很好的,但如果你不需要在浏览器上使用任何语言怎么办? 如果以HTML格式发送数据怎么办? 纯HTML比其他任何东西都更频繁地被使用,并且PHP已经被优化以创建它,既然如此,为什么还要在浏览器上使用JavaScript?

Node特点:高效交付的基础

如果你愿意花时间创建一个漂亮的浏览器端网络应用程序,Node.js经过优化,可通过Web服务提供数据。如果你的应用程序很复杂,数据丰富,这是高效交付的良好基础。

PHP特点:SQL

PHP 被构建为与MySQL及其许多变体(如MariaDB)共存。如果MySQL不完全正确,还有来自Oracle和Microsoft的其他SQL数据库。 代码可以对查询进行一些更改。 一些稳定的,开发良好的代码将与SQL数据库相连接,这意味着也可以轻松地集成到PHP项目中。

Node.js特点:JSON

不是说不能为PHP堆栈获得JSON库,但使用JavaScript时,使用JSON更简单灵活。它是从浏览器到Web服务器到数据库的一种语法。

PHP特点:编码速度

对于大多数开发人员,为Web应用程序编写PHP感觉更快:没有编译器,没有部署,没有JAR文件或预处理器,只是你最喜欢的编辑器和一些目录中的PHP文件。当一个项目需要快速开发时,PHP是最好的工具。

Node.js特点:原始速度

当你算入大括号和括号时,编写JavaScript代码有点困难。它的核心在于精细准确。

PHP特点:内部竞争

HHVM团队和Zend团队正在努力为每个人提供快速代码。出现了独立的基准,每个人都将代码推向极限,这意味着更好的性能。

Node.js特点:融合团结

你 真的想要两个不同的代码库吗?竞争有助于发展,但碎片化很快就会出现。如果你必须花几个星期或几个月重写代码,竞争不会有什么好处。虽然Node.js在 几年前经历了分裂,随着io.js的推出,Node.js的Universe已经重新统一了,它给了PHP开发人员很久以来未曾有过的语言团结。