译者想说的话:
本来想最后的,但是翻译完了一看贼他妈长,谁高兴看到最后哦!就放前面了。
这是一篇发表在2017年11月29日的文章,我现在翻译也滞后了很多了,但对于墙内的朋友来说,也不算太晚吧。来看看2018年什么技术值得学习。
作者的结论放前面:React很好很牛逼,大家都学啊!找工作不愁,找媳妇无忧。
当然了,这是作者的观点,你可以不同意,事实上,我并不是非常同意。
主要是通过文章的论述,看到作者是如何搜索数据信息并根据结果得出对应的结论的。
本文作者主要使用了Google趋势,GitHub的下载量,Npm的下载量,Indeep.com的招聘岗位信息获得数据。
你可以自行用相似的工具在国内市场进行一番分析,看看结论是否一致。
我个人认为:React开发多样性更好,更稳健,适合大型项目,但Vue开发更简单快捷,适合小型项目。但我也建议:先学React,然后顺手把Vue学了。
本文原载于Medium
以下是译文
去年,我写了一篇文章集中了2017年值得学习的热门技术。今年带来了更多的惊喜。
本文将会回答一个问题:“在投入了学习时间后,那些学习方向可以带给你最高的回报?“
首先:软件占据了世界,Web占据了软件领域,JavaScript占据了Web。2018年,React将占据JavaScript。
2018: 今年是React年!
React在2017年的流行度战争中获得胜利。
仍然有大量的开发者使用Angular相关技术工作,有谷歌趋势为证:但随着React持续地赢得使用者的满意度的调查,React增长速度已经让Angular(和其他所有框架)望尘莫及。
Vue.js呢? 我听说还挺热门的
人们经常会做一些十动然拒的选择,比如对Vue.js。这是我去年说过的:
Vue.js 在GitHub上有着大量的Star和下载。如果保持这样的发展势头,2017将会表现得非常好。但我并不认为明年(乃至更将来)他可以撼动React或者Angular(两者的增长也非常快)的地位。建议学完React或者Angular之后再学习Vue。
Vue.js在2017年表现得很好。获得了大量的报道,也有许多人对其产生了兴趣。但和我预料的一样,他甚至没能影响到React的地位,我非常自信地预测2018年他仍然不能撼动React。这句话也意味着,2018年Vue将取代Angular:
如你所见,Vue从Angular手中夺走了下载量:
但 React遥遥领先,并且有着极高的增长率:
Vue.js增长快于React。那么与React和Angular在2017之间的竞争有什么不同呢?
在2016年末,JavaScript世界已经准备迎接一个新的框架了。Angular的用户非常不满意,而React的用户满意度很高,非常多的人想要学习React,极少数的人愿意学习Angular。在2017年末,Angular 2+ 用户的满意度仍然低于50%,仅有49%。
这场竞争与React和Vue.js之间的非常不同。React在用户满意度方面战胜了Vue.js(93%对90%)。2017年初由于React的许可的争论刺激了用户放弃了React。Facebook听取了用户的心声,并将许可更改了回去。
在这场角逐中,我并没有看到关键性的证据表明用户正在从React切换到其他框架。对Vue.js来说,比起从jQuery和Angular手中抢走用户来说,从React手中抢走用户会更艰难。
Vue.js有巨大的空间从Angular和jQuery手中里快速抢走用户,但接下来当它不得不从React手里抢走用户以获得持续的增长,可能就要碰钉子了。
我预测Vue.js在接下来的1到2年内仍能有巨幅增长,接下来就将在定点与React展开一张艰难的争夺战,最终Vue.js会降到第二梯队,除非有什么颠覆性的改变。
Jobs
jQuery已经陨落.
在招聘市场上,React已经完全甩开了jQuery--十年来第一个在招聘市场受欢迎度超过jQuery的框架(1)。我们正在见证一个时代的结束。
与去年的图表比较一下:
这个图表所展现的另一个有趣之处是:其他框架/类库获得的增长数远超过jQeruy失去的用户数。去年一年内,所有提到前端框架的招聘工作岗位数上升了超过10K。
随着工作岗位数的增加,我们还能发现在平均薪资上也获得了增长,从2016年末的年薪93,000刀上升到了年薪110,000刀
显然,2018年前端依然是一个增长的市场。
- 方法论: 所有工作信息在Indeed.com进行搜索获取。为了剔除错误数据,搜索时我附加了关键词“软件(software)”以提高相关度,然后乘以系数1.5(是否使用“软件”为关键词搜索到编程岗位工作数的一个粗略比)。所有的SERPS(搜索引擎结果页)都用日期排序,并且抽查了相关度。这个结算结果不是100%准确,但在本文内用作一个相对近似的结果已经足够了。
框架推荐
在看过今年的这些数字之后,我准备强烈推荐React作为通用的APP解决方案,包括手机APP(PWAS,React Native),网页应用,大多数的办公生产工具和桌面媒体内容生产应用程序(参见Electron)。
也有一些明显的例外:轻量级的销售引导页(完全放弃框架),3D游戏,AR/VR。对于3D内容,看看Unity, Unreal,或者PlayCanvas。也就是说React也可以用于3D内容UI。
我也严格地对今年其他可选的前端框架做了排序。并不是说他们不够酷,只是在招聘市场上,他们完全称不上React的竞争者,这个列表是关于ROI(投资回报率),而不是关于最佳技术的。
为何React吸引了如此多的关注?
Why so Much Interest in React? 浏览了所有关于React的招聘信息,我注意到一个有趣的趋势--非常多的团队用React做一些我们通常认为并非Web前端的工作。
- React Native(一个观点,在RN方面的开源库超过Vue.js相关开源库的总数)
- React 用于物联网
- React 用于AR/VR(Oculus Rift(译者注:被FaceBook收购的虚拟现实眼镜开发商)引导了这方面的招聘潮流)
- React 用于一些你根本没听过的复杂计算机应用。
多用途是React的一个大卖点。与其他众多框架不同,使用React并不代表必须操作数据Model,甚至浏览器或者DOM本身。事实上,我发现有极少数React相关岗位甚至没有提到JavaScript。
React也提供了大量活跃的依据React标准实现的生态系统--一些从jQuery插件统治Web世界以来从未出现过的东西。
问题不再是:“使用哪个框架?” 而是:“什么技术和React结合得最好”
2018年(乃至2019年)没有什么可以撼动React的地位。你很安全。JavaScript的疲劳似乎正在消退。现在我们有了一个伟大框架用于构建APP,并且围绕着React有着大量的软件生态系统。
你该学习那些课程?
和去年一样,你不能错误地聚焦要点,你应该更重视React APPs所使用的函数式编程。
React的两大主要优势
- 确定的视图渲染机
- 从直接的DOM操作抽象出视图层
使用纯函数编程构建APP可以提供最好的确定性,这也是函数式编程的本质意义。
考虑到这一点,下面列出一些你应该学习的课程:
- ES6的基本语法(译注:这是本文作者的另一篇文章,ES6基础相关国内推荐阅读阮一峰的《ES6语法入门》)
- Class类语法和它的若干陷阱(译注:这是本文作者的另一篇文章)--在React组件中是可以使用class的,但是要避免继承你自己的class,避免使用instanceof,避免强制你的class类使用者使用新的关键词。
- 函数式编程与软件构成(译注:这TM还是本文作者的另一篇文章)
- 柯里化函数(译注:上述“ES6基本语法”文中的一节)
- 函数闭包(译注:这依然本文作者的另一篇文章,国内推荐阅读阮一峰的《Javascript闭包》)
- 纯函数(译注:后面除非特殊说明否则都是本文作者的另一篇文章)
- Promises
- Generator 函数与async 函数
- 测试驱动开发(TDD:Test-Driven Development)
- RAIL性能模型(译注:此链接为RAIL模型的介绍,我找到了国内的一篇简单翻译:RAIL简介:一个以用户为中心的性能模型)
- 增强型网页应用(译注:PWAs,谷歌推出的“小程序”增强型网页应用): 参见 “原生应用程序的末日” 与“为什么说原生应用程序的末日已到”
- GraphQL在2017成熟了很多,并且正在快速取代REST APIs。Apollo添加的嵌入式离线缓存结构特性会使得Apollo+GraphQL在2018成为Redux的一个替代品(或者是一种补充)。
类库与工具
以下是一些我认为最有用的类库与工具: (译注:相关链接就不附加了,请自行搜索教程)
- React
- Redux
- Redux-Saga 管理异步I/O和隔离副作用
- Next.js 使用Node和Express做SSR(服务端渲染)
- Material UI(译注:谷歌设计语言)
- Storybook
- Cheerio 用作React组件的单元测试(比起Enzyme,我倾向于使用Cheerio)
- Lodash
- Babel 用于编译ES6使其可以在更老的浏览器上工作.
- Webpack JavaScript最流行的打包工具
- ESLint 轻松找出语法和结构错误。在检查代码和测试驱动之后,减少你代码错误的最好办法。
- Ramda
- Node与Express
- RxJS 使用 Observables 的响应式编程的库。使用patch imports避免最后打包体积过大
TypeScript在2017表现不错,但我觉得他并没有提供多大的帮助反而使得APP更复杂了。他的主要缺点是因为编程语法和直觉相反导致过分依赖注释,并且要写出高度有序的函数通常伴随着难以形容的扭曲感。我试过一阵全天使用其进行开发,但最后给我的感觉是: “令人震惊的静态类型的秘密” 与“你可能不需要使用TypeScript”
2018值得关注的技术
所有下列正在研究和开发的领域将在2018年创造真正的工作岗位:
- 增强型网页应用(PWAs)
- 区块链与金融技术
- 医疗行业技术
- AR/VR Hololens, Meta和ODG现在已经发行了。ODG R-9计划2017年发行,但已经改到了2018年发行。MagicLeap承诺将在2018年发行。AR将会带来超越手机带给人们的交互体验革新。
- 3D 打印
- AI
- 无人机
量子计算机也将会改变世界,但可能要到2019年甚至更晚才能真正可用。现在已经有了在线的量子计算机,但他们能做的还不多。现在对于大多数开发者来说开始体验生产还为时尚早。微软最近发布了他的Q#编程语言(译注:国外一篇报道)。同时,IBM和Google都开始投入大量资源在云量子计算机市场里了。(译注:链接均为国外报道)
如果你想要准备开始学习量子计算机编程,你可以从linear algebra开始学习。 也有一些量子计算机方面基于Lambda 演算所做的功能性的探索
可以遇见的,我们将会看到一些AI,云APIs被开发出来以帮助一些数学背景薄弱的人们体验到量子计算机的一些能力。
下面是作者的广告
Need React Training for Your Team?
DevAnywhere offers live remote training plus 1:1 mentorship to teach the functional programming and software composition principles critical to getting the most from React.
- Live lessons
- Flexible hours
- 1:1 mentorship
- Build real production apps
作者介绍:
Eric Elliott is the author of “Programming JavaScript Applications” (O’Reilly), and cofounder of DevAnywhere.io. He has contributed to software experiences for Adobe Systems, Zumba Fitness, The Wall Street Journal, ESPN, BBC, and top recording artists including Usher, Frank Ocean, Metallica, and many more.
He works anywhere he wants with the most beautiful woman in the world.