2018年JavaScript现状报告
前言
JavaScript(后面统称JS)在过去五年得到飞速地增长,早期JS实现类似微博的“点赞”这样的功能都需要刷新一次页面。
后来开发者通过JS来制作SPA(单页面应用程序),在浏览器加载一次,后续视图都是通过JS动态生成的。webpack技术出现,解决了SPA页面加载过慢的问题,提升了性能与用户体验(但我觉得是因为4G和1M+宽带的普及)。
尽管JS最初是一门弱类型浏览器语言,但现在,在互联网各个领域都大展身手;毫无疑问JS已经成为一门一流的编程语言。
最近我看到斯坦福大学做的一份JS现状调查报告,调查覆盖了2万多名开发者(包括中国);这份报告向我们展示了许多信息,从流行趋势到薪资情况;话不多说,让我们看一下这份报告的细节。
前端框架部分
最受欢迎的前端框架React
React已经连续三年蝉联最受欢迎前端框架,十分受中小企业欢迎(react是要license的,很多大公司已经弃用这个框架,2018年2月份改为MIT)。

如图所示,紫色部分越多,就说明该框架就越受欢迎。
Angularjs现状
React的火热并不意味着我们可以忽略掉Angular,虽然它没有React的活力,但是却有强大的基因。
首先,它是由google团队运维的,并且同时也得到了他们得支持。Angular拥有庞大得用户群,例如openstack(Angular1)。
上图可以看出,Angular1要比Angular2更受欢迎。
实际上Angular更聚焦于企业市场,Angular2与TypeScript的结合就可以看出端倪。
不能忽视的Vuejs
国人维护开源的前端框架,短时间内就成为React的最大威胁;

实际Vuejs击败React的可能性并不大,但是Vuejs可以给我们带来更好的用户体验(毕竟有完整的中文doc)。
一些库可以让你获得更高的薪资
通过下面图表,你可以获悉,熟知哪些库可以给你带来更高的工资。

事实证明,与高工资关联的通常是一种特殊的技术,例如Reason,ClojureScript(这两个都没听说过)

这两张图表不太适用于国内市场,更高级的开发人员更倾向于尝试更多样化的库,而初级开发人员比较专注于一两种主流技术。
GraphQL一种用于API查询的语言
GraphQL一种用于API查询的语言,它对你的API数据提供了一套易于理解的完整描述,使得客户端能够准时地获得它需要的数据,而且没有任何冗余。

虽然目前使用者较少,但是我相信GraphQL是最令人感兴趣的技术之一。

JavaScript !== 前端
JS因浏览器前端而知名,但是不等于它只能做前端的相关项目;经过这么多年的迭代,Nodejs已经是流行的后端选择。
而在物联网设备中,JS也越来越趋向于主流,以后你家的电视能够运行JS代码也不要感到奇怪。
今年大受欢迎的VS code文本编辑器,也是有JS编写的,并且使用Electron做载体,在桌面运行。
世界各地JSer
当我们谈到JS,我们经常把它看作一个单一的,统一的生态系统,实际,在世界各地都有各自的主流趋势。


Vuejs在中国特别受欢迎,Angular在印度比较受欢迎,这也很合理,Angular本身就适合企业级的大项目,印度又是以技术外包而闻名。
强类型JS崛起
TypeScript,GraphQL,Reason都有共同的特点,他们都依赖于类型。
虽然JS开发人员长期以来享受着随心所欲地编写代码,这种自由是一把双刃剑:不可靠,容易出错。
近些年,这种情况得到了改善,TypeScript的出现,并且被大量地使用,这并不是巧合,而是一种进化。
总结
这项报告调查再一次显示了JS生态系统的丰富程度。
似乎经过了多年的争论和忽视 JS之后,开发者们终于找到了第三种选择:改进它。
JS基本上是能满足你任何想要实现的需求,它为语言变体和适应性敞开大门,而且这种趋势几乎没有停止的迹象。
这也许就是为什么大多数开发者都认为,尽管存在缺陷, JS语言仍然朝着正确的方向发展:
2018年JavaScript现状报告的更多相关文章
- JavaScript 现状:方言篇
导读 JavaScript 和其他编程语言有一个很大的不同,它不像单纯的一个语言,而像一个由众多方言组成大家族.从 2009 年 CoffeeScript 出现开始,近几年出现了大量基于 JavaSc ...
- Packt发布了2018年技能提升报告
2018年技能提升报告Skill Up 2018 - Developer Skills Report | PACKT Bookshttps://www.packtpub.com/skill-up-20 ...
- [转帖]2018年JVM生态系统报告出炉
很多未解之谜终于有答案了——2018年JVM生态系统报告出炉 https://blog.csdn.net/hollis_chuang/article/details/84134298 2018年1 ...
- 43%非常看好TypeScript…解读“2022前端开发者现状报告”
摘要:近日,The Software House 发布了"2022前端开发者现状报告",笔者在此对报告内容进行解读,供大家参考. 本文分享自华为云社区<"2022前 ...
- NOIP 2018 普及组 解题报告
目录 标题统计 题目链接 思路 代码 龙虎斗 题目链接: 思路 代码 摆渡车 题目链接: 思路 对称二叉树 题目链接 思路: 先来解释一下为毛现在才来发解题报告: 其实博主是参加过NOIP 2018普 ...
- 全年DDoS攻击分析|知道创宇云安全2018年度网络安全态势报告
*本报告由知道创宇云安全出品* 数据来源:知道创宇云防御平台 前言 2018年,网络安全领域暗流涌动,攻击趋势不断攀升,T级DDoS攻击多次爆发.数据泄露事件层出不穷.勒索软件大行其道.此外,随着我国 ...
- 「九省联考 2018」IIIDX 解题报告
「九省联考 2018」IIIDX 这什么鬼题,送的55分要拿稳,实测有60? 考虑把数值从大到小摆好,每个位置\(i\)维护一个\(f_i\),表示\(i\)左边比它大的(包括自己)还有几个数可以选 ...
- 2018上半年DDoS攻击报告:流量峰值达1.7Tbps
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 2018年上半年DDoS攻防仍如火如荼发展,以IoT设备为反射点的SSDP反射放大尚未平息,Memcached DDoS又异军突起,以最高可 ...
- 2018 .NET开发者调查报告: .NET Core 是怎么样的状态
4月28日,在公众号里发起<.NET Core 使用调查>,该调查为期一周,有近3300名开发者参与. 已经使用.net core 的人数只有44%,计划使用.net core 比例达到 ...
随机推荐
- leetcode-67.二进制求和
leetcode-67.二进制求和 Points 数组 数学 题意 给定两个二进制字符串,返回他们的和(用二进制表示). 输入为非空字符串且只包含数字 1 和 0. 示例 1: 输入: a = &qu ...
- Android 7.0 fiddler代理抓不到https请求的解决办法
解决方法: 1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/app/src/main/res/xml/network_security ...
- Docker Compose 安装 on centos7
本文演示如何在CentOS7上安装Docker Compose. 1 在线安装 1.1 下载安装包 $ curl -L https://github.com/docker/compose/releas ...
- webstorm 2018 激活破解方法大全
转载自:https://blog.csdn.net/voke_/article/details/76418116 方法一:(更新时间:2018/4/8)v3.3 注册时,在打开的License Act ...
- mssql sqlserver 规范使用方法分享
转自:http://www.maomao365.com/?p=5586 摘要:下文主要讲述sql server表设计及脚本编写中,相关规范 ———————————数据表字段类型选择:字符类型根据长度选 ...
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- AngularJS学习之旅—AngularJS 简介(一)
一.AngularJS 简介 1.AngularJS 是一个 JavaScript 框架. AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库.Angu ...
- 数据挖掘---Numpy的学习
什么是Numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵(任意维度的数据处理),比Python自身的嵌套列表(nested list structure ...
- adb 的常见问题与处理办法两三
问题1:无法安装手机驱动, 解决方法:安装强大的豌豆荚,通常能都能解决问题 问题2: adb devices 时出现 adb devicesadb server is out of date. ki ...
- spring cloud 实践之hystrix注意事项
当我们写类似下面代码时 package demo1.demo1; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org ...