翻译 回顾 2017,展望 2018JavaScript 发展趋势

es6china · 2018年01月23日 · 432 次阅读

原文地址:The Top JavaScript Trends to Watch in 2018 – Hacker Noon
翻译作者:miaoYu
转载地址:http://www.zcfy.cc/article/the-top-javascript-trends-to-watch-in-2018-hacker-noon

如果2017年你被项目折磨的死去活来,那么这篇文章就是为你准备的。

你可以把本文作为一个指南,为2018规划您的学习计划。


React vs. Vue.js

没有多少人相信Vue将成为 React强劲的竞争者,但是2017年的Vue是无法忽视的,在开发者的推广下甚至把Angular打入了冷宫。

当我们展望2018,蓬勃发展的Vue将和React展开激烈的竞争。

未来React仍将获得世界最富有公司之一的财力支持,也不用质疑维护它的开发者天赋。

但是Vue正在做的所有事都是为了开发者更快乐:

  • Vue是轻量级的,学习成本低,社区丰富,有非常棒的状态管理,以及内置路由,等等。

Vue的社区当然还没有React那么庞大,但社区的成长基于核心团队是否有优秀的推广大使以及是否愿意倾听社区的声音(两者缺一不可)。

当我们提到取悦开发者的时候,我们不要忘了Facebook今年的重大错误:BSD + 专利许可,这个错误送走了大批开发者。

实际上,我们已经可以用Vue来很好的开发任何一个项目,这个是Vue核心团队取得的巨大成就。

这里有一篇React vs. Vue vs. Angular在2017对比的文章

未来将如何发展?Facebook继续做他们擅长的事:复制创新然后世界将继续使用React。

如果你是一个Angular的开发者,又不想学React,在Angular就业机会减少的情况下,Vue是你最好的选择(况且Vue和Angular1的语法有些很像)。

每个JS开发者都应该考虑学习Vue.js,当它在蓬勃发展产生巨大岗位需求的时候,至少在短时间内意味着你可以产生一些价值。


Next.js

Next.js为React.js加个保险。

Youtube视频 --- Next.js:让React变得简单易用

React + Next.js可以让你在工具方面更接近Vue的开发体验,比如代码分割,路由以及状态管理,并允许你保留React的巨大生态圈。

如果你用React创建app,Next.js在用服务器渲染方面会非常有用。

除此之外,和Now.js(Next.js同个团队开发)一起用,你可以非常快的部署你的React应用。

随着Vue和React的激烈竞争,希望看到越来越多的Next出现,让React的开发体验越来越好。


Angular

尽管Angular在吸引开发者方面越来越困难了,但在2018年,它仍然是一个被广泛使用的框架。

许多公司采用了Angular 1.0,他们会在2018-19这个时间段考虑重构,对他们来说React和Vue比起Angular 2 会是更好的选择。

拥护者们仍然觉得Angular是值得企业选择的JS框架。在2018年,我们拭目以待。

这篇文章告诉你Angular在2017到底发生了什么


Reason

只要是Facebook生产环境正在使用的,都是值得注意的。

Facebook目前就正在使用Reason(基于已经很完善的OCaml)开发web版本的Facebook Messenger,服务于WhatsApp, Instagram, Ads, 等产品。

在2017年,他们也发布了reason-react,你可以写Reason代码,然后会编译成通用的ReactJS。

所以可以设想下,你不再需要安装Babel等众多的插件,你只需要OCaml + Reason就够了。它火起来只是时间问题了。

比起其他的compile-to-js语言,Reason在今年收获了更多关注(对不起Elm,我们仍然爱你),所以Reason在2018年,毫无疑问是值得关注的。


GraphQL

GraphQL 是一个为APIs写的查询语言,由Facebook开发。

Youtube视频 --- 从REST到GraphQL

GraphQL在2017年被炒的火热,因为主流公司(比如Yelp, Spotify, Github, Walmart, NYTimes, 等等。 )都在用GraphQL。

其中一些API只能用GraphQL,甚至都没有兼容REST。 简而言之:大部分创新公司都把赌注压到了GraphQL上

当然RESTful APIs离死还远,但是,从初创公司的发展趋势来看,GraphQL是一个很流行的选择。

另一方面,像Falcor这样的替代方案,现在几乎没人提及了。

如果你想加入创新性的公司,毫无疑问是时候学习GraphQL了。


Redux, Relay Modern 和 Apollo

Youtube视频 --- React.js Conf 2016: Redux

Redux是最受欢迎的Dan Abramov/Andrew Clark 项目,它很快就成为了React项目中状态管理和数据请求的最佳解决方案。

但是在数据请求方面,GraphQL 会更优于Redux。

我们现在可以用Relay Modern (由Facebook开发),Apollo,GraphQL。客户端框架请求传递GraphQL数据到你的React应用,比起Redux更为高效。

正如一位开发关于Relay/Apollo/Redux的看法:

这些框架给我们带来的好处不应该是相互冲突的。更应该各取所需,这对于Web的发展很重要

这意味着你可以同时使用Redux和Relay,用Redux管理本地状态和一些复杂的非服务器状态,然后用Relay请求数据。

但是目前社区急需简化这个环节(目前只得到了Vuex/Vue.js/ApolloCashay的响应)。


Storybook

Storybook在2017真的很火。

Storybook 是一个用于定义,开发,测试UI组件的环境。

它本来在2017年初就已经挂了,但是在年中的时候又大规模流行起来了,感谢社区的大力推广。这是一个励志的故事,讲述了开源工作该如何开展,这篇文章值得一读。

它非常有用,让你可以创建和测试你的UI组件。它就像一个在线的UI样式指南,这对于开发者非常有用。

如果你打算入坑Storybook,这里有个案例你可以参考Airbnb’s date picker.

如果你打算在2018年成为一名开发者,请在面试的时候让面试官知道你会用Storybook。

福利:react-bluekit是一个Storybook的替代品,Netflix技术团队正在用它来实现自己公司的组件库。


Prettier

就像它名字暗示的那样,Prettier是一个代码格式化工具,让你的代码可读性更好,也更美观。

举个例子,输入:

foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());

变成…

foo( reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne() );

在GitHub上超过18,000个stars,开发者们正在爱上这款小而精的工具。

它已经被用于许多项目上了,比如Webpack, React, Next.js, Babel 等等。


Jest 和 Enzyme

当提及JavaScript测试,Jest 毫无疑问是首选,如果你是用React构建应用,那么Enzyme是一个很好的补充。

jest, jasmine, mocha在npm下载量对比图

可以看出Jest占主导地位。

Jest的快照特性在2017年得到广泛应用,大大降低了使用成本。(youtube --- React Conf 2017对此进行了介绍)

Enzyme,由Airbnb的技术团队开发,是一个JavaScript库,用于测试React组件。从2016年到现在,GitHub上共获得12,000个star。

Jest的快照 + Enzyme的超简洁API,用来测试React组件是个完美的组合。在2018年流行趋势还会持续增长。


Webpack

Webpack已经成为最受欢迎的打包工具。2017年对于Webpack来说是难以置信的一年。

16年的这个时候,Webpack甚至连文档都还没有,大多数开发者都不到如何下手。

17年初的时候,关于Webpcak我写了两篇文章Webpack在短短三个月筹集了1.5W刀! (很高心我们成为Webpcak早期的赞助者) 来支持它。目前Webpack基金已经有数十万美元。

Webpack不仅为开源项目的发展铺平了道路,而且在整个一年里都保持了巨大的发展势头。

感谢Sean Larkin 一直引领者Webpack前进,我们都很期待接下来会带给我们什么。

由于Webpack这个项目得到了强大的支持,以及非常注重社区发展,所以它在2018的发展趋势是最好预测的。


Parcel

Parcel,一个打包工具,截止2017年底很短的时间内收获了超12000个star,直逼Webpack。

Parcel的出现是为了解决目前市场上打包工具太过臃肿的问题,而且打包速度是Webpack的两倍(使用缓存会快10倍)。

不像webpack那样需要复杂的配置,Parcel不需要任何配置。

“你只需要指出应用的入口文件,然后什么都不用管了。”

尽管简化配置和速度的提升都是巨大的改进,但如果Webpack在2018年上半年没有跟进,我一点也不会感到奇怪。

与Vue和React的竞争关系一样,小项目总是会更快的创新,但是取决于大项目带来的灵感。


Gatsby

Gatsby是一个基于react的静态网站生成工具,由Kyle Mathews.开发。

因为Kyle从去年开始就全职开发Gatsby,所以Gatsby发展快速,收获了大量的star。

React的官方网站都是用Gatsby生成的。

Gatsby提供了高性能以及高效的web体验。

下图展示了Gastsby的基本原理:

Gatsby使用了预加载资源技术,让网页浏览异常的快。

尽管Gatsby并会是这个领域的翘楚,但Gatsby提供的创建高性能静态网站解决方案会继续流行下去。

了解更多Gatsby


Babel

Babel就不需要介绍了吧,不出意外,它将继续流行下去。

总而言之,2017对于Babel是美好的一年,把重心放在Babel 7(希望能在2018年初会发布)。最重要的是,它们还写了一首歌 :)

2108,Babel依旧保持强劲。


Flow 和 Typescript

TypescriptFlow 对于想用静态类型的JavaScript开发者是最好的选择。

在2018年,我们不想看到它们中的一个干掉另一个,希望它们能共存,提供不同的解决方案。

Flow由Facebook开发,对于React开发者来说是个完美的选择,它很容易和Bebel整合,通常在React项目中使用。

TypeScript由微软开发,流行于Angular 2+开发者中。

2018年对于它们俩来说,不会有太大的发展,需要关注的是,Reason是否会取代它们。


Immutable.js

我非常喜欢一个网友对 Immutable.js的描述:

immutableJS避免开发者在开发复杂项目的时候做傻事

Immutable.js是Facebook的另一个项目,通过使用不可变对象确保状态不被改变。

正如那位网友说的那样,在开发复杂项目的时候非常有用,避免在不注意的情况下改变状态。

数据封装在不可变的Immutable.JS对象中,永远不会被改变,和JavaScript形成鲜明的对比,JavaScript中有一些操作不会改变你的数据,比如一些Array方法,包括map,filter,concat,forEach等,但是有些操作会改变数据,比如数组的pop,push,splice等等。

使用Immutable.JS会带来很多限制,具体要看你自己的需求。

Github上,现在已经有20,000个stars,Immutable.js在2017年开始流行起来,随着越来越多的开发人员加入进来,在2018年会继续增长。


Popmotion

Popmotion 是一个JavaScript动画库,在Github上迅速吸粉。

想象一下,就像Flash遇上JQuery

Popmotion通过大量创新带来非常棒的体验,在2018年值得关注。


React Native & Electron

React Native 允许你用React为移动端创建app,Electron让你可以用JavaScript来创建桌面应用。

这两款框架在2017年已经非常成熟了,如果你想创建本地应用,它们都是你绝佳的选择。

一些用Electron创建的著名apps,比如Slack, Atom, Github Desktop 以及 Discord。

还有一些流行的app是用 React Native来创建的,比如Facebook, Instagram, Airbnb 以及 UberEATS。

你也可以为Windows创建React Native apps

相比起以前,作为一名JavaScript开发人员,你可以更轻松的为桌面或者移动端创建app。


Web Assembly

现在已近有4款浏览器支持Web Assembly,如果说2018年它会火起来还为时过早。

但请你不要忽略他,有很多人都在关注它呢,敬请期待。


总结

我们在展望2018年趋势后,以下是我们建议的学习计划,让你保持一个开发者的竞争力,释放你的潜力:


暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册