JavaScript你必须了解的主流趋势

944 阅读9分钟

JavaScript你必须了解的主流趋势

作者:Eric Elliott 翻译:张全玉

tkXzh4.png

如果你想找到一份不错的JavaScript工作,或者在2020年以及未来的十年里赶上重要的技术,那么这篇文章适合您看。本文的重点不是告诉您哪些技术栈和框架是最好的、最受欢迎的或是最流行的,而是告诉您在2020年及以后哪些将为你获得一份出色的工作提供更大的机会。

我们将研究不同来源的数据:

  • Google搜索趋势(按主题)
  • State of JS调查报告
  • Stack Overflow调查报告
  • Npm下载量
  • Indeed.com上发布的空缺职位统计

以上指标都不是完美的,但就本文的目的而言,npm下载次数和职位发布数量最为重要。当我们综合考虑这些指标时,它们可以清晰、一致地描绘JavaScript技术前景和趋势。根据这些指标选择一个学习的框架,是个好想法吗?那就取决于你的目标了。

由于我们有一个明确的目标:求职者的 学习投资回报率,这使得比试图告诉您什么对每个人都是最好的要容易得多。虽然不存在万能的方法,但客观地定义能为您实现具体目标的概率是相对容易的。让我们来看一些数据。

首先,学习JavaScript

在您过多的担心技术栈之前,请先学习JavaScript并使用它编写软件。如果您无法解释什么是函数、对象和模块,那么请从这里开始。所有的软件开发都是组合的:我们把一个大而复杂的问题分解成一些小问题。这些问题可以使用软件的构建来解决:函数、对象、模块等等。我们将这些解决方案组合起来就形成我们的应用程序。从2020年开始,充分理解JavaScript和软件组合。

React在2019年占据主导地位,2020年可能继续保持

tkje4e.png

我喜欢参考npm下载指标,因为它可以很好的表明框架的活跃使用情况。由于用户在本地电脑上运行npm install,因此业界常用的框架在下载量上会很高。

**注意:**这里不包括jQuery,因为许多jQuery是不使用npm的传统项目,所以无论如何它都会被严重低估。把Svelte包含进来是为了提供一些关于其在市场中的相对地位的视角。并解释在其余图表中将其排出的原因,如上图所示,在图表中显示Svlet是没有意义的,因为Svelte没有足够的数据来支撑。再比如Google Search Trends 甚至没有Svelte主题。

空缺职位统计

下表统计了当前提及特定框架的职位空缺.

tkjMjI.png

与去年相比,React增强了领先优势,Vue 侵蚀了部分AnglularjQuery市场份额。下面是一个饼图,显示了每个框架的相对就业市场份额。

tkjY4g.png

JavaScript开发人员的平均工资在2019年再次增涨,从每年的11.1万美元增加到每年11.4万美元。

方法:在indeed.com上进行求职。为了排除误报,我将搜索与关键词softWare配对,以增强相关性,然后乘以1.5(大约相当于使用“software”和不使用“software”的编程列表之间的差异)。所有SERP都是按日期排序并抽查相关性。得到的数字并非100%,但是对于文本中使用的相对近似值来说,它们已经足够好了。

Google搜索趋势

tkjBD0.png

正如您所料,搜索兴趣*反映了就业市场份额,但存在一些有趣的差异。我们可以清楚的看到,从2017年到今天,人们对jQuery的兴趣在减弱,但是对Vue.js搜索在提高。以下是搜索份额:

tkj28J.png

与招聘信息一样,React拥有很强的领先优势,吸引了36%的前端框架搜索量,其次是Angular(约27%)和jQuery(25%)。对Vue.js的搜索兴趣比其工作市场份额要大得多,并且该数据在排名上与就业市场数据基本一致。看来我们已经成功证实了这一点。

方法:对于所有字词,数据都是按主题而不是搜索字词收集的,以便从无关的关键词匹配中剔除误报。

未来值得关注的框架

使用React寻求技能的工作更多,而不是使用流行的,但是应用不太广泛的框架(例如SvelteVue,两者均具有很高的满意度,但行业采用率要小得多)。

学习SvelteVue可能很酷,但是如果您的目标是找一份工作,那么如果您先学习React,你的工作机会会更大。

话虽如此,SvelteVue在2019年JavaScript现状调查中,SvelteVue的用户满意度得分都非常高。在过去,React的高用户满意度得分迅速增长且占主导地位,并超过Angular,但满意度得分却相对较低。

2019年,React的用户满意度排名最高,达到89%的用户满意度。亚军包括Svelte(88%)和Vue(87%,低于去年的91%)。SvelteVue不太可能会抢走足够的React用户来赚钱,但是仍有许多使用AngularjQuery的用户可能会转而使用SvelteVue,从而在2020年推动这两个框架的进一步增长。

可以肯定的是,掌握React将会增加您在2020年找到并保留出色工作的几率。

TypeScript vs JavaScript

毫无疑问,过去几年中TypeScript的增长非常迅速,根据JavaScript现状调查,有89%的TypeScript用户会再次使用它,而66%的调查受访者使用TypeScript或有兴趣 使用TypeScript的情况(比最低年份的71%略有下降)。

不过,尽管人们的兴趣确实很浓厚,并且使用率似乎正在迅速增长,但是对TypeScript的经验在工作市场上还没有强烈的需求。

只有约7%的JavaScript职位空缺在职位描述中提及TypeScript。 这可能有点低估TypeScript工作,因为招聘经理希望JavaScript开发人员能够在没有太大麻烦的情况下使用TypeScript,因此他们有可能不会在工作岗位上提及TypeScript

tkjWvR.png

我坚持认为TypeScript语言的投资回报率可能较低甚至为负。 它可能会影响效率而不是提高生产率,并且,如果您已经在使用TDD,代码审查和设计审查等重大的漏洞预防措施,则TypeScript编码不太可能带来明显的漏洞。

但是,TypeScript也有很多值得热爱的地方,您不应该害怕它,因为招聘经理希望JavaScript开发人员能够在没有太大麻烦的情况下使用TypeScript.招聘公司使用TypeScript而不是JavaScript来拒绝工作。 由于TypeScriptJavaScript的超集,因此从JavaScriptTypeScript的入门并不像学习完全不同的语言那样具有挑战性。

您可能不需要学习TypeScript语言就可以在2020年的就业市场竞争中脱颖而出,但是TypeScript引擎非常有用,即使对于标准JavaScript也是如此。

我每天都用它来为使用Visual Studio代码的标准JavaScript提供智能提示。 甚至可以使用JSDocTypeScript引擎理解并解释类型注释,因为它会解释类型注释)或外部d.ts文件,并且VS Code将自动为您使用的模块获取TypeScript定义。

**注意:**使用TernJSAtom多年来,一直享受类似的好处,但是这种组合缺少TypeScript引擎+ VS Code的维护和社区支持。

如果您还没有尝试Visual Studio代码,您可能希望从现在开始。顺便说一句,VS代码在JS受访者中占据了JavaScript IDE市场的主导地位,市场份额为57%(其次是webtorm,市场份额为14%)。

数据管理

Redux在状态管理竞争中仍然处于领先地位,但GraphQLApollo在满意度和兴趣上都有所提高。 预计2020年GraphQL会持续增长。

tkjoVK.png

也就是说,即使您使用GraphQL,我仍然认为Redux状态管理有充分的理由,而且我认为即使不使用框架,每个人都将从学习Redux中受益。

GraphQL是近年来流行的查询语言。 它具有简单的语法。由于它是跨整个堆栈使用,因此学习GraphQL需要学习如何将其连接到数据存储层,因此集成起来令人生畏,但值得付出努力。

GraphQL不会在短期内完全取代JSON REST API,但是它在2019年的增长更快,我预计强劲的增长将持续到2020年。

后端

Express是占主导地位的Node框架,其满意度很高,到2020年将不会有优秀的挑战者,但是随着无服务器的兴起,我预计随着新的十年的到来,Express的统治地位将逐渐下降。

tkvmZV.png

Next.js是一个完整的堆栈React框架,最初是在Express之上构建的,但后来从Express切换到无服务器和静态优化,它变得疯狂起来。

当我们将EricElliottJS.comExpress切换到无服务器的Next.js时,它将托管费用降低了90%,并加快了页面加载速度。 我不强烈推荐它。 我们现在对所有应用程序都使用Next.jsZeit托管。

tkvuIU.png

测试

JestCypress分别在单元测试和功能测试中最受欢迎,但是我非常喜欢RITEWayTestCafeRITEWay是单元测试框架:它是总是回答每个单元测试必须回答的5个问题的测试框架。

TestCafe是一个功能测试工具,与Cypress一样,它不需要您与Selenium抗争,但具有更好的跨浏览器支持和出色的测试记录器IDE。我强烈建议QA团队去TestCafe看看。

功能工具

LodashRamdaImmerReduxRxJS是我经常使用的功能工具。

tkvlRJ.png

Ramda在2019年取得了长足发展,并提供了Lodash所不具备的一些工具,包括透镜和传感器。 RxJS提供传感器风格的功能及其可管道操作。 Immer使得在JavaScript对象上操作变得容易。Redux是一种状态管理工具。