BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

想成为一名Web开发者?你应该学习Node.js而不是PHP

| 作者 Andrei Neagoie 关注 0 他的粉丝 ,译者 张健欣 关注 3 他的粉丝 发布于 2018年4月18日. 估计阅读时间: 15 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

我认为,这是一种暗示...

我经常被我的学生们问到的最常见的问题之一是,“为什么你在课程中教授Node.js而不是PHP?” 告诉他们,“相信我,我在行业内工作”显然不够。因此,本篇就是我在课程中包含Node.js的原因,以及如果你想要成为一名开发者,你应该抛弃PHP的原因。尽管我用这两种语言作为一个例子,但我会在本文中向你展示一个框架,用来决定你应该在接下来的开发生涯中学习哪些工具、编程语言、框架以及代码库。

作为一名开发者,你的时间和资源是有限的,你必须决定将你的时间投入到哪些语言和工具中,从而获取最大回报。

现在,你最好问自己一个问题:我能将时间和精力投入到哪些学习上,才能在未来的开发事业中获得知识、薪资和满意度方面的最大净值?

这并不意味着选择最容易的路径。这意味着选择一些工具,使你能够在接下来的许多年中保持竞争力的同时,提升你的技能,从而使你成为一名高级开发人员

在本文的结论部分,你会发现所有我所推荐的2018年的技术,如果你想要成为一名Web开发者的话。因此,如果你实在急不可耐,可以直接跳到本文末尾。否则,请抓住这次千载难逢的机会,开启一段冒险之旅。

我们会在本文中使用两种类型的分析:就业前景分析技术分析。下面就是具体内容:

图片来源:https://vizteck.com/blog

Node.js vs PHP — 就业前景分析

我们会这个分析中使用Stackoverflow开发者调查数据和LinkedIn数据。我们也将只聚焦Web开发相关的技术。

流行度:

在排行榜中,JavaScript连续5年是最常用的编程语言。Python的使用5年内首次超过PHP。那么Node.js是什么情况呢?Node.js是一种JavaScript运行时环境。通俗点讲,Node.js是一种使用JavaScript的方式,就像你在服务器端使用PHP那样。因此,在本文中,你可以将Node.js当作JavaScript。


你可以看到,Node.js和JavaScript排在首位,而且明显比PHP流行。

在过去5年中,Stackoverflow从开发者调查中收集数据,发现JavaScript和Node.js之类的语言的流行度在增加,而像PHP之类的语言的使用情况在萎缩:

React最受开发者喜爱,然而,Node.js是开发者最想要掌握的,而且是第二受喜爱的。

薪资待遇和工作机会:

考虑到拥有的开发经验,使用下表中蓝线以上语言(例如Go、Rust和Clojure)的开发者的薪资相对较高,而使用蓝线以下语言(例如PHP)的开发者的薪资相对较低。表中圆圈的大小表示该语言相对于其它语言来说的使用者数量。
PHP开发者的薪资明显更低且他们的开发经验年限更少。

在LinkedIn招聘,你可以看到全世界发布的Node.js职位比PHP职位多了差不多10,000个。这还不算Node.js相对于PHP来说是一个年轻得多的技术,而且PHP在WordPress中广泛使用,而WordPress构建了互联网上30%的网站

最终,你可以看到,各地区的技术职位的平均薪资(我没有包含世界栏,因为PHP都没有在世界栏上榜):




当然,我们在这里不是要吐槽PHP。我们只是通过观察这些数值来决定选择学习什么。PHP明显比JavaScript和Node.js之类的技术排名低。

更新:截至本文发布,stackoverflow发布了2018年调查结果。PHP的衰退在扩大

总结:

PHP人气在下降,而Node.js的就业市场和人气在增加。总之,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使你能够无需编写太多代码,就可以定制博客。然而,在这种情况下,更简单导致质量不怎么样。一项技术越容易学习,人们进入该领域也就越容易,然后就增加了人才供应,你的服务的收费也就更低。

结论

随着WordPress的普及,PHP是Web 1.0时代最顶尖的语言之一。Node.js在2009年发布,而且技术上来讲并不是一种语言,而是JavaScript的一种运行时环境。Node.js是新一代Web开发的佼佼者,在Web 2.0时代遇到的越来越多的基于事件的、数据驱动的、I/O密集的应用,更适合用它来构建。

特别是,Node.js基于事件的异步架构,使得它非常适合实时应用,例如消息和协作应用。在这些应用中,会发生大量并发请求,并且客户端和服务器之间会有大量前后端交互。没有WordPress就活不成?Node.js有它自己非常棒的CMS——Keystone.js

总是需要有所取舍。从来不会有一种技术,你学了之后就能解决所有的难题并且不会过时。我们所能做的就是分析我们的选项,然后挑选出投资回报最好的一个。看看上面所讲的工作前景分析和技术分析,我们可以看出一个明显的赢家。

我选择Node.js。

尽管所有技术用它们特定的方式使用都非常棒,但我们生活在一个信息如此丰富的世界,因此我们必须对我们可以集中精力并深入学习的话题数量进行限制。

在我的课程中,我教授一些这个领域的职业生涯相关的方法论,以及像Facebook、Netflix、Google和Amazon之类的一些大公司所使用的工具。如果你想要在2018年成为一名全栈Web开发者,我建议你学习:

HTML5
CSS3
Javascript
React.js
Node.js + Express.js
PostgreSQL
以及其它一些技术…

你可以通过阅读我的文章《在2018年学习编码》,或者查看我的在线课程,带你从零经验到成为一名拥有必备开发技能的职业开发者(使用优惠券代码:MEDIUMNODE1723,只需要10.99美元)。

你觉得怎么样?

更新: 围绕技术的讨论应该有来自双方的意见。我建议你读一读评论。记住,总是存在权衡取舍,而你在工作中使用什么工具最终取决于你自己。我们所能做的就是了解我们的选择项,而不是盲目跟风。最后,愿意考虑与你自己不同的意见。

关于作者


Andrei Neagoie 高级软件开发者。目前致力于打造教授开发技巧的终极课程。可以在twitter上@andreineagoie,和他交流。

查看英文原文:Want to be a Web Developer? Learn Node.js not PHP

感谢覃云对本文的审校。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

nodejs是趋势 by 高 飞

来学习吧,奉上nodejs视频教程大全
www.sucaihuo.com/video/135.html

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT