课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
相信大家在学习web编程开发技术的过程中应该接触到关于node的相关技术知识吧。今天我们就一起来了解和学习一下,node编程开发技术相对于PHP编程开发技术都有哪些优势和劣势。希望通过对本文的阅读,大家能够正确认识不同技术之间的区别。
Node.js vs PHP — 技术分析
让我们看一看这两种技术各自的优缺点。
Node.js 优点:
非常适合那些客户端和服务器端需要保持实时通信的应用。类似socket.io之类的工具,使得构建聊天应用之类的东西非常简单。同样这个功能也让Node.js适合那些处理物理网设备数据的应用以及单页应用,而这种类型的应用现在非常普遍。
原生的JSON序列化和反序列化,与Web中的AJAX请求配合得非常好。
对具有非阻塞输入/输出的事件驱动应用非常有用(输入/输出是指一个信息处理系统与外部世界的通信。这个信息处理系统可能是计算机,而外部世界可能是一个人或者另外一个信息处理系统,例如数据库)。
你学会了JavaScript,你就学会了Node.js。你不需要去学习另外一种语言,例如PHP。这意味着,你可以花费全部精力学习和掌握JavaScript。你将能够用同一种语言编写前端和后端代码。
许多流行的客户端框架,例如React、Vue和Angular是用JavaScript编写的,而且JavaScript是现代浏览器的主流语言。当你在服务器端使用Node.js时,你就可以获得在整个应用开发栈使用同一种脚本语言的所有好处。前端和后端使用同一种语言非常易于维护:这使得所有团队成员之间的协作更容易,因为前端和后端开发人员都使用相同的JvaScript数据结构、方法和语言规范。
当处理来自客户端的大量请求时,单线程事件驱动系统非常快。
通过NPM可以获取越来越多的客户端和服务器端三方代码库,以及Web开发命令行工具。另外,大多数这些项目都托管在GitHub上,你可以报告一个问题,或者创建自己的代码分支进行定制。
可以运行JavaScript相关工具和其它Web开发者相关工具的环境已经成为标准环境,包括任务执行器、压缩工具、代码检查工具、格式化工具、预处理工具、打包工具和分析处理器。
许多新的API和AWS Lambda之类的服务提供原生支持。
V8引擎的所有性能提升,我们都可以从中获益。V8是Google研发的JavaScript解析器,Node.js构建在V8引擎之上。由于谷歌开发团队不断提高V8的性能,Node.js免费从中获益。
Node.js 缺点:
上面提到的NPM包会让你的代码变得臃肿,这些包可能是不安全的,而且由于有太多选项,想找到一个好用的软件包很困难(观察下载数和GitHub统计数据是一种解决这个问题的方法)。
有太多使用Node.js和npm包构建服务器的方法。这使得新入门的开发人员更难以从中挑选。
不适合那些依赖CPU消耗量大的代码的服务器。(例如,图像处理或排序等复杂算法)。一般来说,任何输入/输出之外的事情都可以看作是消耗CPU的代码。通常,多线程服务器环境比Node.js更适合这种场景(解决方案:如果需要,你可以用C语言编写CPU密集的代码)。
Node.js不能利用底层系统或机器的所有核心。你必须自己写逻辑来使用多核处理器。这可以用许多方法实现,但是这需要一点额外的工作(当你能够大化系统的CPU利用率时,这就会成为一个优势)。
Node.js 总结:
Node.js非常适合那些并发连接数比较多的应用,每一个请求只需要很少的CPU时钟周期。这使它非常适合目前互联网上的许多应用,例如单页应用应用和实时应用。
使用JavaScript内置的异步处理,可以创建高度可伸缩的服务器端代码,大化单个CPU的利用率和内存,并且能够比传统的多线程服务器处理更多的并发请求。
Node.js的依赖、规则和指南更少,这使得开发人员可以更自由更有创造力地按照他们的方式开发他们的应用。开发人员可以为他们的项目选择佳的架构、设计模式、模块和功能,通过NPM从社区中获益。
PHP 优点:
由于PHP诞生年代久,因此有一稳健庞大的社区。
PHP有一个功能强大的代码库,包含流行的网站构建平台(例如WordPress、Joomla、Drupal)。CMS(内容管理系统),例如WordPress,使得在几分钟内部署一个博客或者一个电商网站非常容易,而且允许非开发人员非常容易地进行定制。
使得用非开发工具进行安装更容易,适合个人或者小型公司,他们不需要懂SSH和Linux服务器。基础托管平台提供的大量PHP应用(例如cPanel)可以通过一次点击就安装完毕。
和其它通用用途的编程语言不一样,PHP是特意为Web设计的。PHP提供了一种非常棒的服务器端解决方案,而不需要担心浏览器端的JavaScript,因为所有的页面都可以轻易由服务器端生成和渲染。如果你想要避免在客户端传送太多代码,这就非常有用。Node.js也可以这样做,但是解决方案没有这么简单。
PHP7和HHVM(由facebook支持)开发提高了PHP的性能。
PHP 缺点:
PHP只用于后端。这意味着,如果你想要做客户端相关的工作或者被认为是一名全栈开发者,你还是需要学习JavaScript。
使用PHP,服务器端重渲染和大量访问服务器的请求来生成和渲染页面,对于单页应用来说,并不是一个好的选择。
每个活跃的客户端消耗一个服务器进程。不适合拥有很多客户端连接的App。
与Node.js相比,新的API和AWS Lambda之类的服务对于PHP的原生支持有限。
它遵循经典的客户端-服务器模型,其中每个页面都初始化应用、数据库连接和HTML渲染。这使得当你导航一个网站时,PHP比Node.js应用要慢。Node.js应用一直运行,只需要初始化一次。因此,随着HTML5、AJAX和WebSocket等Web技术的出现,Node.js更适合新的Web发展方向。
PHP 总结:
PHP简单易学,围绕它有一个庞大的社区。对于标准化的博客或新闻站点方案来说,PHP是一个不错的选择。它能够借助于流行的CMS(内容管理系统)——WordPress的力量。WordPress使你能够无需编写太多代码,就可以定制博客。然而,在这种情况下,更简单导致质量不怎么样。一项技术越容易学习,人们进入该领域也就越容易,然后就增加了人才供应,你的服务的收费也就更低。
作者:Andrei Neagoie
译者:张健欣
来源:infoq
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。