原文:https://x-team.com/blog/top-javascript-trends-2018/
去年有4万人对JavaScript的上升趋势感到好奇。那么,我的同事们呢,现在我们来看看2018年。
如果你在2017年一直生活在一块石头或埋在项目中,这是你想要看的文章。
2017年发生了很多事情,正在为2018年的许多行动和创新而努力。
您也可以将此作为指导,计划2018年开发人员的发展,帮助您获得更多创新的项目。
React 与Vue.js
让我们直接看看好消息:没有多少人相信Vue会成为React的一大竞争对手,但今年不可能忽视Vue,甚至会把Angular从开发者炒作的角度带入阴影。
当我们展望2018年的时候,我们即将展开一场激烈的为期两年的战争,充满了对Vue的大肆炒作。
React仍然拥有世界上最富有的公司之一的财务支持,更不用说一些非常有才华的维护者。
但是Vue正在做所有让开发者真正开心的事情:
Vue是轻量级的,易于学习,具有令人难以置信的工具,具有良好的状态管理和路由内置(!)等
Vue的社区肯定没有React那么大,但是社区的增长是基于核心团队是否拥有伟大的使者,并倾听其社区(两者都在)。
当谈到开发人员时,让我们不要忘记Facebook今年史诗般的失败,BSD +专利许可协议与开发人员很好的结合在一起。
实际上,我们已经达到了开始使用Vue来简化生活的每个项目,这是他们核心团队取得的令人印象深刻的成就。
可能的最终情况?Facebook做的最好:复制创新者,世界继续使用React。
如果你是一个拒绝学习React的Angular开发者,那么Vue.js应该很快成为你的职业道路的一个更好的选择,因为Angular的机会会减少(而Vue也有类似于Angular 1的语法)。
每个JS开发者都应该考虑学习Vue.js,因为它已经足够让我们开始看Vue.js开发者的请求,这意味着你可以在短期内为自己创造一些价值至少。
Next.js
然后是Next.js,我们将其称为“React的保险”。
视频:https://youtu.be/evaMpdSiZKk
即使Facebook从未在竞争中领先,与Vue相同的动力进行创新,但React与Next.js的结合让您更加接近Vue在工具,代码分割,路由和状态管理方面的体验 ,还可以保留大量的React生态系统和支持。
接下来对React中构建的服务器端渲染的应用程序也是非常有用的,这是一个增长的趋势。
另外,新加入的Now.js(由同一个团队创建),你有一个超快的方式来部署你的React应用程序。
随着Vue vs. React战斗的继续,期待越来越多的采用Next与React同步,让React阵营的每个人都感觉更舒适。
Angular
尽管Angular在开发人员方面遇到了越来越大的困难,但它仍将继续成为2018年被广泛使用的框架。
很多公司都采用了Angular 1.0,并且随着他们在2018-19年期间希望更好地迁移,他们将把React或Vue.js视为比Angular 2更好的替代方案。
Angular的其余拥护者已经采取了Angular将成为企业首选的JS框架的立场,但这一说法尚未得到证实,并且不太可能在2018年得到证实。
Reason
总是值得关注Facebook在生产环境中使用的任何东西。
Facebook现在使用Reason (他们采取已经成熟的OCaml),Facebook Messenger的网络版,以及其他项目(WhatsApp,Instagram,广告等)。
在2017年,他们还发布了为React创建绑定的react-reason,因此您实际上可以编写可编译为惯用的ReactJS的原因代码。
所以想象不需要安装Babel(+多插件),Flow等,只需要OCaml + Reason(现在支持React绑定)的威力。这是一个等待爆炸的大趋势。
在JS领域,今年比其他大多数编译语言(对不起Elm,我们仍然爱你),今年更受关注,所以这绝对是在2018年继续观看和玩的一个。
GraphQL
GraphQL是API的查询语言(想想:REST的现代化)。
视频:https://youtu.be/ntBU5UXGbM8
GraphQL在2017年的炒作活下来了,因为Yelp,Spotify,Github,Walmart,NYTimes等大公司现在都拥有基于GraphQL的API。
其中一些API甚至完全是GraphQL,甚至没有REST选项。简而言之:创新型公司正在把注意力放在GraphQL上。
RESTful API肯定远没有死,但是再次看看初创公司正在移动的趋势,GraphQL是一个受欢迎的选择。
另一方面,像Falcor这样的替代品几乎不再讨论。
如果你想在创新公司找到工作,这绝对是开始学习GraphQL的时候了。
Redux,Relay Modern 和Apollo
Redux是着名的Dan Abramov项目,不仅他的职业生涯迅速蹿升,而且迅速成为了React中状态管理和数据获取的最佳解决方案。
视频:https://youtu.be/-jwQ3sGoiXg
但GraphQL真的让Redux震惊,主要涉及到数据抓取。
我们现在有了Relay Modern(由Facebook创建)和 Apollo ,GraphQL客户端框架,可以让您更加有效地将GraphQL数据提取并传递到您的React应用程序。
但正如一位开发人员指出的,关于 Relay / Apollo /Redux:
这些框架及其好处不一定是相互排斥的。事实上,在网页开发中一起使用它们,可以提供一个很好的非常重要的关注点分离。
这意味着您仍然可以使用Redux与Relay一起使用,使用Redux作为本地状态和一些复杂的非服务器状态,然后使用Relay作为获取。
但社区渴望某些东西来简化这个(到目前为止唯一的答案是Vue.js或Cashay)。
Storybook
Storybook是定义、开发和测试UI组件的环境。
由于社区的巨大努力,它从今年年初几乎死去,到2017年年中大量流行。这是一个值得一读的关于开源的工作应该如何发展的鼓舞人心的故事。
这非常有用(甚至有趣),让您可以独立构建和测试UI组件。这就像一个真正为开发者提供实际价值的活的UI风格指南。
您可能已经使用Storybook来查看一个开源项目,但为了亲眼看到它,请查看Airbnb的日期选择器的故事书。
如果你想在2018年以开发商的身份脱颖而出,那么就去看看你上个项目的故事书。
Bonus:还可以查看一下故事书的react-bluekit,Netflix的工程团队正在使用它的组件库。
Prettier
顾名思义,Prettier是一个代码格式化程序,使您的代码更可读,更好,更好。
foo(reallyLongArg(),omgSoManyParameters(),IShouldRefactorThis(),isThereSeriouslyAnotherOne());
会变成这样:
foo(
reallyLongArg(),
omgSoManyParameters(),
IShouldRefactorThis(),
isThereSeriouslyAnotherOne()
);
Github上有超过18,000颗星,开发人员都喜欢这个简单而有价值的项目。
它也用于你可能已经喜欢的其他项目,比如Webpack,React,Next.js,Babel等等。
再次,你可以成为一个Go开发者,甚至不需要安装它。
Jest and Enzyme
当谈到JavaScript测试时,Jest肯定是领先的,在专门构建React应用程序时,Enzyme是一个很好的补充。
正如你在这里看到的,Jest现在在下载中远超Jasmine。
Jest的快照功能在2017年真正起飞,使处理测试的痛苦远没有那么痛苦。从React Conf 2017观看此演讲,了解所有相关信息。
视频:https://youtu.be/HAuXJVI_bUs
由Airbnb的工程团队创建的Enzyme (酶,译注)是用于测试React组件的JavaScript库。自2016年以来,它在Github上急速获得了12,000颗星。
Jest's Snapshots + Enzyme超级简单的API用于测试React组件,这是一个很好的测试组合,将在2018年继续上升。
WebPack
Webpack已经上升成为最受欢迎的资源捆绑器。WebPack也有一个令人难以置信的一年。
去年的这个时候,Webpack几乎没有文档,大多数开发人员不知道如何开始使用它。
然后,在今年年初之前,我写下了Webpack在3个月内筹集了15,000美元(以及作为其最早的赞助商之一有多高兴)来支持这个项目是多么令人难以置信。他们现在有数十万美元的资金。
Webpack不仅可以为开源项目的发展铺平道路,而且整个项目的发展始终保持着巨大的发展势头。
Sean Larkin仍然领导着Webpack的发展,接下来看看Webpack是否有能力实现目标。
由于这个项目得到了很好的支持(以及他们对社区的关心程度),所以这是2018年最容易预测的趋势。
Parcel
但是,随着每一个大规模的趋势,心怀不满的开发者力量越来越大。
Parcel这个打包器的竞争者,正在迅速获得发展势头,2017年获得了12,000个Github星,直接排在Webpack的喉咙之后。
Parcel公司的说法是,所有其他的打包器都过于臃肿,而Parcel的打包速度是Webpack的两倍(使用缓存时快10倍)。
这也跟Webpack的配置有些混乱,就像Parcel一样,没有配置需要。
“只要把它指向你的应用程序的入口点,它就会帮你做其他的。”
虽然简化配置和提高速度都是很大的改进,但是如果Webpack不在2018年上半年复制这些改进,我不会感到惊讶。
与Vue vs. React类似,这个小家伙总是会创新得更快,但是这个大家伙得到这个创新的启发,并且改进他们的项目。
这也是#webpack团队最喜欢的Parcel其中之一。
但是我们也从第一天开始就有一个非常干净的架构。所有选项的可扩展性都会带来成本。:)https://t.co/3BlZoe4Ub1
- 肖恩·托马斯·拉金(@TheLarkInn)2017年12月22日
Gatsby
Gatsby是由Kyle Mathews 创建的React静态网站生成器。
自从凯尔去年全职参与Gatsby以来,真正开始加速。
没有比React网站本身使用Gatsby这个事实更好的证据了。
Gatsby的全部功能都是关于性能,并在React中提供尽可能快的Web体验。
从他们的网站这个图表给你一个如何工作的想法:
Gatsby也使用阶段性(progressive)网络技术,为其他网页预取资源,所以浏览是闪电般的。
虽然Gatsby不会以任何方式主宰这个行业,但对于构建将继续流行的快速静态网站来说,这是一个绝佳的解决方案。
欲了解更多关于Gatsby,阅读这篇文章。
我们也很高兴今年赞助Gatsby的发展。
Babel
Babel现在不需要介绍,而且基本上是默认的趋势。
总而言之,对Babel 来说,2018依旧是一个美好的一年,主要集中在建造Babel 7(希望在2018年初启动)。最重要的是,他们写了一首歌:)
目前Babel唯一关心的问题(除了其非凡的维护人员从项目中无限期/模糊的突破),就像Reason成为主流。
但是到目前为止,Babel应该在2018年继续保持强劲。
我们也很高兴今年赞助Babel。
Flow & Typescript
Typescript和Flow都是JavaScript开发人员用来改善代码质量的很好的静态类型选项。
我们可能不会在2018年看到其他人倒闭,因为他们两人一起生存下来,服务于不同的业务场景。
由Facebook构建的Flow是React开发人员的首选,因为它可以轻松地与Babel集成,也是React项目中常用的。
由Microsoft构建的TypeScript在Angular 2+开发人员中很受欢迎,作为主要的语言。
从这两个方面来看,2018年的进步可能会比较迟钝,接下来的几年真正的问题将会变成是否像“Reason”这样的东西取而代之。
Immutable.js
视频:https://youtu.be/ewMKXHu1E1Q
我喜欢一个redditor描述Immutable.js的方式:
immutable.JS 确保大型团队的开发人员不会做一些愚蠢的事情。
简单地说:另一个Facebook项目Immutable.js确保state不会被使用immutable(不可更改)的对象所改变。
正如我们的redditor朋友指出的那样,这对于一个可能无意中搞砸状态的大型开发团队来说是非常有用的。
数据封装在一个immutable.JS对象从不变异。总是返回新副本。这与一些操作不会改变数据的JavaScript(例如一些数组方法,包括map,filter,concat,forEach等)有所不同,但也有一些(Array的弹出,推送,分片等)。
使用Immutable.JS有一些相当大的限制。但是对于你的需求,可能跟局限无关。你可以在这里阅读更多。
现在Github拥有2万颗星,Immutable.js在2017年已经普及,预计2018年将会继续上涨,因为开发人员开始花时间理解其概念和权衡利弊。
Popmotion
Popmotion是一个快速在Github上获得星星的JavaScript运动库。
想想像Flash遇到jQuery。
现在,我意识到使用这两个词在同一句话中,并不能帮助推销这个日益流行的库。
但是,越深入了解这个项目,就越是发现一群对jQuery和Flash有严重困扰的人,只是需要把事情做得更好。
Popmotion真的是一个更好的体验,围绕网络动画的许多创新刚刚开始沸腾。这是一个值得注意的2018年。
看看他们的网站开始进行尝试。
React Native & Electron
React Native允许您为移动设备构建React应用程序,而Electron允许您为桌面构建JavaScript应用程序。
两者在2017年都成为了完善的框架,都是从JavaScript到本地应用的绝佳解决方案。
在Electron上构建的一些值得注意的应用程序包括:Slack,Atom,Github Desktop和Discord。
使用React Native构建的流行应用程序包括:Facebook,Instagram,Airbnb和UberEATS。
由于它们都服务于不同的目的,所以它们相对较少,但是如果React Native开始支持桌面,事情会变得很有趣。
有一个用于创建React Native桌面应用程序的实验性开源项目。
无论如何,现在是成为一名JavaScript开发人员的好时机,考虑到您可以比过去更轻松地构建桌面和移动应用程序。
Bonus:Web组装
现在所有4个浏览器都支持Web Assembly,我们快做到了。现在称之为2018年的趋势还为时尚早,所以我们会在12个月内更新。
但是请保持这一点,因为大家现在正在密切关注这一点。
2018年学习资料
看完所有的趋势之后,我们建议您考虑在2018年学习如何保持作为一个远程开发人员的竞争力,释放您的潜力:
- 大胆,学习Vue.js
- 每个React开发者都应该学习Next.js
- 开始学习Reason(和ReasonReact)并在一个小项目上试用。
- GraphQL是您2018年待办事项清单的必备工具。
- 接下来学习了Relay Modern,React + GraphQL应用程序中用于数据获取的Go-to选项。
- Storybook! Storybook! Storybook!
- 安装Prettier的项目,使你的代码更具可读性。
- 在React项目中学习并使用Jest快照与Enzyme一起使用。
- 学习Flow(React开发者)或TypeScript(其他人)。
- 考虑Gatsby从Markdown - >静态页面构建一些东西。
- 使用React Native构建移动应用程序。
- 使用Electron构建桌面应用程序。
- 用Popmotion来创建一个流畅的动画。
最后,你可以将这个资源列表导入Todoist项目: