Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【专业技术】PHP对战Node.js

【专业技术】PHP对战Node.js

作者头像
程序员互动联盟
发布于 2018-03-16 03:04:49
发布于 2018-03-16 03:04:49
1.1K0
举报

整个故事正如好莱坞大片的经典剧情走向:两位昔日好友如今分道扬镳,甚至被迫陷入了你死我活的斗争当中。刚开始的分歧并不严重,无非是一位老友对于另一位伙伴长久以来占据、但又绝口不提的业务领域产生了点兴趣。而在现实版的这场编程语言决斗大电影中,Node.js成了那位成了好兄弟反目成仇的导火索,并由此引发一场势均力敌、旗鼓相当的大战:PHP与JavaScript,双方曾一度携手统治整个互联网世界,但如今却为了争夺开发人员的支持而向对方痛下杀手。

遥想当年,合作关系总是简单而纯粹。那时候JavaScript负责处理浏览器上的细枝末节,而PHP则管理着存在于端口80与MySQL之间的全部服务器端任务。当时双方保持着愉悦的合作心态,并不断为互联网旗下的各种关键性部件提供支持。无论是WordPressDrupal还是Facebook,缺少了PHP、人们在网络中几乎一分钟也待不下去。

然而某位机灵的技术人员发现了一个惊人的秘密:JavaScript也完全能够运行在服务器之上。几乎在一夜之间,我们似乎根本用不着借助PHP的力量来打造下一代服务器堆栈了。单凭一种语言,我们已经能够构建起Node.js以及其它各类运行在客户机上的框架。“JavaScript无处不在”甚至成为一部分开发人员的工作信仰。

当然,这个故事的结局还没有敲定。对于每一位到处宣扬Node.js先进性以及JavaScript便捷性的开发人员来说,总有跟自己作对的家伙存在——他们更倾向于PHP深邃的代码基础以及长期稳定的实际表现。那么这位旧日支配者能够在自己多年盘踞的服务器端主场上击溃挑战方吗?JavaScript又是否会无情地推翻自己的老朋友,完成自己的天下一统野心?请大家拿起手中的爆米花桶与可乐,共同观看这场精彩纷呈的同室操戈好戏。

PHP胜出:代码与内容混合

大家在输入的过程中当然希望能将自己的思路直接转化为网站的文本内容,同时还要为进程添加分支、一部分if-then语句以保证站点拥有漂亮的视觉效果,具体取决于URL中的某些参数。又或者,我们希望能够利用单一数据库将文本或者数据加以混合。在PHP的帮助下,大家只需要打开魔法般的PHP标签,几秒之内即可开始编写代码。是的,不需要任何模板——因为一切都已经从属于模板了!也用不着使用额外的文件或者复杂架构,可编程逻辑的强大力量就在我们的指尖、等待着各位的调遣。

Node.js胜出:关注点划分

将代码与内容加以混合像一把神奇的拐杖,虽然开始能够很好地引导使用者、但最终却往往变成沉重的负担。诚然,将代码与HTML混合在一起确实相当有趣——至少前几次体验时是如此。但很多我们的代码库就会变成一大堆逻辑相互杂糅的乱麻。真正的程序员会向其中添加结构,并把修饰层从逻辑层当中划分出来。很明显,新手开发人员能够借此对项目拥有更清晰的认识,也更易于完成后续维护工作。运行在Node.js之上的各类框架正是由这样一群程序员们所打造,他们很清楚当模型、视图以及控制器得到明确划分之后,生活会变得更加美好。

PHP胜出:深邃的代码库

整个网络世界充斥着大量PHP代码。用于构建网站的各类主流平台(包括WordPress、Drupal以及Joomla等等)都是由PHP语言所写就。除了这些平台之外,大部分相关插件同样以开源代码的形式存在。总而言之,PHP代码可谓唾手可得,等待着大家对其进行下载、修改并根据需要灵活运用。

Node胜出:新生代码意味着现代功能

不可否认,成千上万的开源PHP文件确实能帮助大家更轻松地完成项目开发,但其中也有不少已达八岁高龄的WordPress插件等待并盼望着开发人员将其下载并加以运用。谁愿意用几小时、几天甚至几个礼拜时间对这些多年未曾更新的代码进行调试?至少我不愿意。Node.js插件不仅更加年轻,而且也享受到了最新架构方案所带来的种种便利。开发这部分代码的程序员们非常清楚,现代Web应用程序应当为客户端引入更多智能化元素。

PHP胜出:便捷性(或多或少吧)

PHP语言在使用过程中并没有太多可说的:几种变量再加上由字符串与数字构成的基本函数就是它的一切。这是一套非常专注的解决方案,用户所期望的仅仅是利用它将数据由端口80移动至数据库及后端当中。PHP没有太大的野心,能很好地完成这项任务就是它的天职。现代数据库不啻为一类奇迹般的工具,因此我们大可以将各类沉重的负载交给它负责处理。PHP是一种复杂程度适中的处理手段,我们根本没必要刻意让它变得难以使用。

Node胜出:闭包复杂性等

JavaScript在使用中的一些小别扭可能会令某些开发人员抓狂,但总体而言这是一套现代编程语言、其中包含大量现代化语法加上以闭包为代表的一系列实用特性。大家可以轻松对其进行重新配置与扩展,从而使jQuery等强大的库成为可能。我们用不着为对象之类的功能而心烦。为什么要跟自己过不去呢?

PHP胜出:不需要客户端应用

大家都说,如果能在浏览器以及服务器上使用同一种语言,那么实际效果肯定是最好的。但如果我们根本用不着在浏览器上使用任何语言,结果岂不是更理想?如果我们能够直接以HTML格式实现数据输出呢?浏览器能够直接接纳这些数据,而且用不着忍受JavaScript线程尝试利用几十次Web服务调用在浏览器上创建页面所引发的各类麻烦与故障。纯HTML往往比其它形式拥有更出色的运行效果,而PHP恰恰针对此类创建任务作出了全面优化。为什么要费心把JavaScript引入浏览器当中?在服务器上构建一切,并尽量避免把过于繁重的任务交给小手机上的小浏览器打理,这才是正确的解决思路。

Node胜出:服务调用比臃肿的PHP HTML调用更为精简

尽管AJAX常常将大量活动部件塞进HTML 5 Web应用当中,但它们确实很酷——而且极具实效优势。一旦JavaScript代码进入浏览器缓存,需要在网络线路间往来传输的就只剩下新数据了。在这里我们不需要面对成吨的HTML标记,而且无需重复下载整个页面内容。只有其中的数据会发生变化。如果大家愿意花点时间来创建一款精致的Web应用程序,那么它绝对能给各位带来理想的回报。Node.js针对数据交付机制作出了深入优化,而且数据只需要提供给Web服务。如果大家的应用程序非常复杂而且充斥着大量数据,那么Node.js无疑为信息的有效传递建立起良好的基础。

PHP胜出:SQL

PHP的设计思路本身就考虑到了与MySQL及其多种变体——例如MariaDB——的共存协作需要。如果MySQL不足以应对大家的实际需求,那么还有更多来自甲骨文及微软的其它卓越SQL数据库可供我们选择。我们的代码能够在经过简单的发动下转化为查询指令。广阔的SQL世界可谓一望无际,而且其疆域仍在不断拓展当中。相当一部分稳定性最出色、开发水准最高的代码都会与SQL数据库进行对接,这意味着所有这些强大的能力最终将能被轻松集成到PHP项目之内。也许整套生态系统还称不上完美而又和谐的家族,但其可观的规模却绝对不容否认。

Node.js胜出:JSON

如果大家必须接入SQL,那么Node.js也提供相关库来完成这项任务。但除此之外,Node.js还能与JSON互通,这套通用方案能够与众多最新NoSQL数据库实现交互。这并不是说我们没办法在自己的PHP堆栈中获得JSON库,但在将JSON与JavaScript配合使用时、往往能够带来简单便捷的任务处理流程。通过这种方式,我们能够保证从浏览器到Web服务器再到数据库全部使用同一种语法,其中冒号与括号的使用方式及作用完全相同。这将帮助大家在节省开发时间之余,显著降低代码编写时的挫败感。

PHP胜出:编码速度

对于大部分开发人员而言,利用PHP编写Web应用程序往往能够得到更为高效的编码体验:用不着编译器、无需部署、更不用提JAR文件或者预处理机制——只需要利用自己最喜爱的编辑器以及目录中的部分PHP文件,开发工作就能水到渠成。各位的实际开发流程也许有所不同,但说起快速搞定项目的神兵利器,PHP在这场内斗中绝对是当仁不让。

Node.js胜出:原始速度

如果从代码本身的大括号与小括号数量角度来看,编写JavaScript代码的难度确实更高一些,但在开发工作结束后、Node.js代码的运行速度却极为惊人。回调机制的引入堪称天才之举,因为这能大大节约我们处理不同线程的时间。代码的核心构建良好而且专门设计用于实现我们的实际需要。这不正是每一位开发人员梦寐以求的效果么?

本文转自:http://developer.51cto.com/art/201501/464543.htm

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从零开始:Node.js服务端搭建教程
在当今数字化时代,Web应用开发已成为推动业务增长和创新的重要力量。随着JavaScript的普及,前端开发人员开始寻求在后端领域施展才华的途径。Node.js,这一革命性的平台,以其独特的事件驱动、非阻塞I/O模型,彻底改变了传统的服务器端开发模式。它让JavaScript不仅局限于浏览器环境,更能在服务器端高效运行,实现了前后端统一的开发语言,极大地提升了开发效率和应用性能。
Front_Yue
2024/12/24
4530
从零开始:Node.js服务端搭建教程
不可错过的Node.js框架
前言 Node.js是由Ryan Dahl于2009年创建的。它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的。Node.js使用事件驱动,非阻塞I/O模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。你可以通过在Node.js中运行JavaScript,使用Ruby或者PHP语言做想做的任何事情。 由于其具有可以方便地搭建响应速度快、易于扩展的网络应用等特性,Node.js受到了Netflix,
xiangzhihong
2018/02/05
3.4K0
【专业技术】Node.js 究竟是什么?
简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页之后,您甚至可能还是 不明白 Node 为何物?Node 肯定不适合每个程序员,但它可能是某些程序员一直苦苦追寻的东西。 为试图解释什么是 Node.js,本文将简要介绍一些背景信息:它要解决的问题,它如何工作,如何运行一个简单应用程序,最后,Node 在什么情况下是一个好的解决方案。本文不涉及如何编写一个复杂的 Node 应用程序,也不是一份全面的
程序员互动联盟
2018/03/16
8580
Node.js作为中间层实现前后端分离
之前做一个Python+django+jQuery项目时候,经常碰到很尴尬的问题,前后端想分离,却始终分不开,或者说是分的不彻底,前端代码的开发总是要依赖Python的环境,环境崩溃了或者缺个插件,项目起不来,前端看不到页面效果,没法开发。 如果硬生生的把前端代码从整个项目中拉出来,单独开发,那前后端开发完,还是需要合并代码联调,还是得合在一起解决问题,开发效率很低。 前后端俨然成了牛郎织女一般,断了连,连了断,强行拆开,也想偷偷幽会,捉急呀。
conanma
2022/01/05
2.1K0
为何Node.js 能成为 Web 应用开发最佳选择?
一项颠覆性的技术进入技术市场总会带来一阵震惊,但随之而来往往是被放弃。然而,Node.js 当然不是这样的情况,它是一个开源的、跨平台的基于 Chrome 的 JavaScript 运行时。Node.js 由 Ryan Dahl 于 2009 年开发,该平台现在已成为实时 Web 应用开发的独特选择,通过提供高度交互的用户体验来提高 ROI。
一墨编程学习
2018/10/20
1.8K0
揭秘Node.js深受欢迎的原因
Node.js是一项服务器技术,它用来构建和运行Web应用,这和ASP.NET,Ruby on Rails或Spring框架做的工作是类似的。它 使用JavaScript作为主要的开发语言,有一个自带的轻量级Web服务器,还有Node包管理(NPM)的大量插件,你就可以按照你自己的需求来塑 造Web应用,像添加MVC特性,加入Restful服务,OAuth或SSL安全性等等。 但是,是什么原因让Node.js突然间如此流行呢?听起来像是有了一种新的Web开发技术,是这样吗?我们来汇总一下原
wangxl
2018/03/07
1.2K0
开发可伸缩Web应用程序的7个关键Node.js优势
Node.js已成为构建可伸缩Web应用程序的首选技术。由于它提供了许多重要的好处,因此在开发人员中获得了极大的欢迎。根据Stack Overflow的2020 开发人员调查显示,在一个热情的社区的支持下,node.js一直是最流行的Web框架, 拥有 51.9%的股份。
王小婷
2020/11/02
1.2K0
对决!PHP vs Node.js !
这是典型好莱坞情节:分道扬镳的两位老朋友间的战斗。摩擦经常开始于一位对另一位不言而喻的领域感兴趣。这部电影的编程语言版本是Node.js的引入将好友情节变成一场旗鼓相当的比赛。PHP和JavaScript,两个曾经一起统治互联网的合作伙伴现在为了开发者心中的份额开始一决雌雄。
疯狂的技术宅
2019/03/27
2.4K0
对决!PHP vs Node.js !
Java与Node.js的较量--一场史诗之战
纵观整个计算机发展史,1995是疯狂的一年:这一年Java语言诞生,紧跟其后的是JavaScript。后者虽然含有java二字,实际和java并不沾亲带故。Java属于静态编程语言,需要编译;而JavaScript只是一个简单的解释性脚本语言,属于动态语言。 如果经历过早期java发展,我们不难忘记它曾经的空前巅峰:铺天盖地的推广,超大规模的JavaOne会议。很多人都认定,这种新型的编程语言必将不惜一切代价称霸计算机领域。然后这一预测最终证实只是部分准确。而今,安卓应用、企业级服务器应用程序和类似蓝光光盘
我是攻城师
2018/05/14
1.6K0
主流Node.js 框架推荐
目前前端技术非常火热,并且技术持续更新,目前很多前端技术是基于Node.js构建。Node.js也成为前端工程师必会的技术栈,这里为前端开发工程师推荐几个好用的Node.js框架。
用户6256742
2022/07/06
6.3K0
主流Node.js 框架推荐
Python和Node.js,应该选择哪种编程语言
每个项目都有其规范和需求,在构建应用程序时,最重要的是选择正确的技术对其进行编码。 在本文中,我们将研究Python和Node.js,以了解它们的优点、缺点和用例,以便你能确定哪一个最适合你的项目。
AiTechYun
2019/08/06
2.8K0
Python和Node.js,应该选择哪种编程语言
Node.js能解决什么问题?
对于PHP、JAVA、Python等服务端语言中,为每个客户端连接创建一个新的线程,而每个线程需要大约2M的内存,理论上,具有8GB内存的服务器可以同时连接的最大用户数为4000个左右,要让Web应用程序支持更多的用户,就需要增加服务器的数量,这样硬件的成本就增加了。 服务器所支持的最大同时连接用户量是一个主要的瓶颈。
雪山飞猪
2019/08/29
1.2K0
Node.js VS PHP—你应该选择哪一个?
现在,WEB开发公司和开发人员可以选择多种技术栈来构建Web应用程序。早期网络发展,不同的技术被用于前端和后端开发。但是,随着Node.js的发布,布局发生了变化,因为它允许开发人员使用 JavaScript 编写后端代码。这最终催生了MEAN(MongoDB + Express +AngularJS + NodeJS )堆栈 web 开发框架,从前端到后端甚至是数据库(MongoDB -JSON)都使用 JavaScript。在 Node.js 之前,Web 开发通常是在 PHP 的帮助下完成的,
企鹅号小编
2018/01/29
1.9K0
Node.js VS PHP—你应该选择哪一个?
Node.js概述
最近几年,Web 领域出现了一个全新的 JavaScript 开发框架——Node.js。该框架一经问世,便以其独特的优势得到了广大开发人员的关注。以下主要从什么是 Node.js 框架,使用 Node.js 框架能够解决什么问题,为什么要用 Node.js 框架,在哪些场合下应该考虑使用 Node.js 来展开概述。
许都博客
2021/06/15
3.3K0
2021年Node.js开发人员学习路线图
Node.js 自发布以来,已成为业界重要破局者之一。Uber、Medium、PayPal 和沃尔玛等大型企业,纷纷将技术栈转向 Node.js。Node.js 支持开发功能强大的应用,例如实时追踪 App、视频 / 文本聊天引擎、社交媒体 App 等,当前已成为开发人员热衷的一项技能。本文作者基于自身实施经历,给出一张 Node.js 学习路线图。建议开发人员考虑深入掌握 Node.js 之前,必须明确自己构建的目标,否则容易半途而废。目标导向有助于在学习中聚焦关键技能,而非纠结于是否值得去学习。
深度学习与Python
2021/03/12
2.7K0
2021年Node.js开发人员学习路线图
Node JS 的未来是什么?
服务器端: 得益于强大的语言以及主流浏览器的支持和帮助, Node.js是所有编程语言中运行速度最快的。最近,我偶然发现了一篇关于最好的 NodeJS 框架的文章,这篇文章让我意识到,在一个非常活跃和热情的社区的帮助下,这种技术流行得非常之快。Node 包管理器(NPM)可以包含任何 bundle / 库,这可能是开始组合服务器的最快捷的方法。NodeJS 很可能不会压过其他后端技术,但可以契合不同种类的需求,并继续发展。
五月君
2019/09/17
3.5K0
Node.js是什么?能做什么?终于有人讲明白了
在JavaScript语言努力摆脱“玩具语言”这个标签的进化历程中,Node.js绝对能记下浓墨重彩的一笔。Node.js并不是一个用于实现具体功能的第三方工具库,而是JavaScript程序的运行环境。
IT阅读排行榜
2023/02/13
14.5K0
Node.js是什么?能做什么?终于有人讲明白了
Node.js 安装和入门
Node(正式名称 Node.js)是一个开源的、跨平台的运行时环境,有了它,开发人员可以使用 JavaScript 创建各种服务器端工具和应用程序。此运行时主要用于浏览器上下文之外(即可以直接运行于计算机或服务器操作系统上)。据此,该环境省略了一些浏览器专用的 JavaScript API,同时添加了对更传统的 OS API(比如 HTTP 库和文件系统库)的支持。
acc8226
2022/05/17
1.3K0
为什么要使用Node.js?
JavaScript的流行给它本身带来许多变化,Web开发的面貌也发生了巨大的改变。现在JavaScript不仅可以运行在浏览器上,甚至可以运行在服务器上,像Flash或者Java Applets那样被包装在沙盒环境中运行,这在几年前这是很难想象的。
疯狂的技术宅
2019/03/28
3.3K0
为什么要使用Node.js?
学习Node.js,从这里开始!
Node.js 就是一个封装了 操作系统API 的可执行程序,同时也对外提供了自己的API,并采用了 JavaScript 作为其API 的标准。换言之,应用软件可以用 JavaScript 直接与操作系统进行交互通讯。
Learn-anything.cn
2021/12/15
1.1K0
相关推荐
从零开始:Node.js服务端搭建教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档