想成为一名WEB开发者?学习Node.js而不是PHP
原文链接:https://medium.com/zerotomastery/want-to-be-a-web-developer-learn-node-js-not-php-dc298154fafd
原作者:Andrei Neagoie
我的学生,经常问我这么一个问题,“你怎么在课程中教授Node.js而不是PHP?”告诉人们“相信我,我在这行工作”仅仅是不够的。所以,这是我在课程中包含Node.js的原因以及为什么如果你想作为开发人员投资你的未来,你应该放弃PHP。虽然我以这两个为例,但在本文中,我将向您展示一个框架,用于决定在开发人员职业生涯中应该学习哪些工具,编程语言,框架和库。
由于您作为开发人员的时间和资源有限,您必须决定投入时间以获得最大的投资回报。
现在,您应该问自己的问题:在知识,薪水和满意度方面,我作为开发人员在未来的职业生涯中,我可以投入时间和精力来学习哪些具有最大净值?
这并不意味着选择最简单的路径。这意味着选择能够让您在未来许多年保持相关性和竞争力的工具,同时培养您成为高级开发人员的技能。
在本文的结论中,如果您想成为使用下面相同分析的Web开发人员,您将在2018年找到我推荐的所有技术。所以你知道,如果你不耐烦,你可以跳到最后。
我们将在这篇文章中使用两种类型的分析:工作前景分析和技术分析。开始了:
Node.js与PHP - 工作前景分析
我们将使用Stackoverflow开发人员调查和LinkedIn进行此分析。我们也只关注与Web开发相关的技术。
人气:
JavaScript连续第五年成为最常用的编程语言。Python的使用在五年内第一次超越了PHP。Node.js在哪里?Node.js是一个javascript运行时。在非技术性说法:Node.js是一种使用Javascript的方式,就像你可以在服务器端使用PHP一样。现在,将Node.js视为Javascript。
正如您所看到的,Node.js和Javascript排名靠前,而PHP则不那么受欢迎。
在Stackoverflow在开发者调查中收集数据的五年中,他们已经看到Javascript和Node.js等语言越来越流行,而PHP等语言的使用一直在缩小:
React是开发人员中最受欢迎的,然而,Node.js是最想学和第二受欢迎的:
薪金和机会:
使用下面图表中蓝线下方列出的语言的开发人员,例如Go,Rust和Clojure,由于他们拥有多少经验,他们的报酬更高。然而,使用像PHP这样的蓝线以下语言的开发人员,即使有多年的经验,也会得到较少的报酬。此图表中圆圈的大小表示与其他开发人员相比,使用该语言的开发人员数量。PHP显着地似乎通过他们拥有的多年经验来越来越少地奖励开发人员。
在LinkedIn Jobs上,您可以看到全球范围内Node.js开发人员的职位发布远远超过PHP开发人员近10,000。尽管事实上Node.js是一种比PHP 更年轻的技术,并且事实上PHP与Wordpress一起大量使用,它支持互联网上所有网站的30%。
最后,你可以看到各地区技术的平均工资(我没有包括下面的全球标签,因为PHP甚至没有在那里制作):
同样,我们不是在这里抨击PHP。我们只是查看数字来决定选择学习什么。显然,它的排名始终低于其他技术,如Javascript和Node.js.
所以:
PHP的受欢迎程度正在下降,而就业市场和Node.js的普及正在增长。总体而言,PHP开发人员的报酬显着低于其他开发人员,而且趋势似乎在不断扩大。
Node.js与PHP - 技术分析
让我们来看看每种技术的优缺点。
Node.js优点:
- 特别适用于需要客户端和服务器之间实时通信的应用程序。像socket.io这样的工具可以很容易地构建聊天应用程序之类的东西 这些相同的功能使Node.js适用于处理来自IoT设备(物联网)和单页应用程序(SPA)的数据的应用程序,这些数据现在非常普遍。
- 使用JSON进行本机序列化和反序列化,可以很好地处理Web上的AJAX请求。
- 非常适用于具有非阻塞输入/输出的事件驱动应用程序(I / O是信息处理系统(如计算机)与外部世界之间的通信,可能是人或其他信息处理系统(如数据库)
- 你学习Javascript,你学习Node.js. 您不需要学习PHP等其他语言。这意味着你可以花费你所有的努力来学习Javascript并掌握它。您只需一种语言就可以编写前端和后端代码。
- 许多流行的客户端框架,如React,Vue和Angular都是用JavaScript编写的,JavaScript是现代浏览器的主要语言。在使用Node.js服务器端时,您可以在应用程序开发堆栈中获得一种脚本语言的所有好处。在前端和后端使用相同的语言非常适合可维护性:它使所有团队成员之间的工作更容易为您的应用程序,因为前端和后端开发人员使用相同的JavaScript数据结构,函数和语言约定。
- 从客户端一次处理大量请求时,单线程事件驱动系统非常快。
- 通过NPM可以为客户端和服务器端访问不断增长的第三方库和软件包,以及用于Web开发的命令行工具。此外,其中大多数都托管在GitHub上,您可以在其中报告问题,或者您可以自己分叉代码来自定义它。
- 它已成为运行Javascript相关工具和其他Web开发人员相关工具的标准环境,包括任务运行器,minifiers,linters,格式化程序,预处理器,捆绑器和分析处理器。
- 许多新的API和服务(如AWS Lambda)本机支持。
- 我们获得了V8的所有性能提升,这是建立在Node.js之上的Google JavaScript解释器。由于Google的工程设计不断提高V8的性能,Node.js可以免费获得此开发的好处。
Node.js缺点:
- 上面提到的NPM包可能会膨胀您的代码,可能不安全,并且很难找到哪些包是好的,因为有很多选项(查看下载和GitHub统计是解决此问题的一种方法)。
- 使用Node.js和npm包构建服务器的方法很多。这使新开发人员难以接受。
- 对于依赖于大量CPU消耗代码的服务器(即图像处理或排序等繁重算法)而言,这并不理想。通常,任何非I / O都可以被认为是CPU消耗代码。在这种情况下,通常多线程服务器环境比Node.js更好(解决方案:如果需要,可以将代码的CPU密集部分交给用C编写的程序)。
- 节点不使用底层系统或机器的所有核心。您必须自己编写逻辑才能使用多核处理器。这可以通过多种方式实现,但需要一些额外的工作(当您能够最大化系统的CPU使用率时,这将成为专业人员)。
Node.js小结:
Node.js非常适合具有大量并发连接的应用程序,每个请求只需要很少的CPU周期。这使得它非常适用于当前在互联网上的许多应用,如SPA和实时应用。
使用JavaScript的内置异步处理,可以创建高度可扩展的服务器端代码,最大限度地利用单个CPU和内存,同时能够处理比传统多线程服务器更多的并发请求。
Node.js带有很少的依赖关系,规则和指南,允许开发人员以他们想要的方式自由和创造性地开发他们的应用程序。开发人员可以为他们的项目选择最佳架构,设计模式,模块和功能,同时通过NPM从社区获得所有好处。
PHP优点:
- 由于年龄的原因,强大而庞大的社区。
- PHP有一个强大的代码库,包括用于构建网站的流行平台(即WordPress,Joomla,Drupal)。CMS(内容管理系统),如WordPress,可以在几分钟内轻松部署博客或电子商务网站,并允许非开发人员轻松定制它们。
- 使用非开发人员工具更容易设置,更适合不需要了解SSH和Linux服务器的个人或小公司。许多PHP应用程序(即cPanel)由基本托管平台提供,可以一键安装。
- 与其他通用编程语言不同,PHP是专门为Web设计的。PHP提供了一个出色的服务器端解决方案,因为所有页面都可以在服务器上轻松生成和呈现,因此无需在浏览器中使用JavaScript。如果您想避免在客户端运送太多代码,这非常有用。Node.js也能够做到这一点,但解决方案并不那么简单。
- PHP7和HHVM(由facebook支持)开发在PHP性能方面有所改进......但最近HHVM出现了一些坏消息。
PHP缺点:
- PHP仅用于后端。这意味着如果您想在客户端工作或被视为完整堆栈开发人员,您仍然需要学习Javascript。
- 使用PHP,繁重的服务器端呈现以及对服务器生成和呈现页面的大量请求对单页应用程序来说不是一个好选择。
- 每个活动客户端都会占用一个服务器进程。不适合拥有许多客户端连接的应用。
- 与Node.js相比,对AWS Lambda等新API和服务的PHP本机支持是有限的。
- 它遵循传统的客户端 - 服务器模型,其中每个页面请求都启动应用程序,数据库连接和HTML呈现。与使用永久运行并且只需要初始化一次的Node.js应用程序相比,这使得PHP在浏览网站时变慢。因此,Node.js更适合网络与HTML5,AJAX和WebSockets一起发展的新方向。
PHP小结:
围绕它的大型社区,PHP更容易学习。对于博客或新闻网站等标准化解决方案而言,它是一个不错的选择。它具有Wordpress的强大功能,这是最受欢迎的CMS(内容管理系统),它允许您创建可自定义的博客而无需太多编码。但是,在这种情况下更简单并不是一个好的质量。学习技术越容易,有人进入现场并增加供应池就越容易,而且你需要为服务收取的费用越低。
结论
随着Wordpress的普及,PHP是Web 1.0时代的顶级语言之一。Node.js于2009年推出,技术上不是语言,而是Javascript的运行时环境。它是更年轻的Web开发的冠军,更适合构建基于事件的,数据驱动的,I / O繁重的应用程序,您在Web 2.0时代会遇到更多。
特别是,Node.js的异步和基于事件的体系结构使其非常适合实时应用程序,例如消息传递和协作应用程序,其中许多请求同时发生,并且客户端和服务器之间有很多来回。没有Wordpress不能活下去?好吧,Node.js有自己的CMS,叫做Keystone.js很棒。
总会有权衡。永远不会有一种技术可以帮助您解决所有问题并使您免于工作过时。我们所能做的最好的事情就是分析我们的选择,并选择一个能获得最佳投资回报的选项。看看上面的工作前景分析和技术分析,我们可以看到一个明显的赢家。
我选择了Node.js.
虽然如果按照自己特定的方式使用所有技术都很棒,但我们生活在一个信息如此丰富的世界,我们必须限制我们可以关注和深入学习的主题数量。
在我的课程中,我教授今天在该领域的职业生涯中相关的方法,以及Facebook,Netflix,谷歌和亚马逊等一些大公司使用的工具。如果您想在2018年成为一个完整的堆栈Web开发人员,我建议您学习:
**HTML5
CSS3
Javascript
React.js
Node.js + Express.js
PostgreSQL **
和其他一些......