JavaScript – 由于它是web开发中最基本的语言,无论你怎么看待它,我们都要去考虑它的”未来”。毕竟,在电脑和手机端,浏览器大概是人们用的最多的应用了。
我们开发人员都知道,JavaScript世界看上去动荡不安甚至有些混乱(e.g. the left-pad incident),但这也是说明了这门语言正在不断的完善。它试着去完善一些老的问题(通常是相关扩展或者复杂的问题)以跟上现在的发展趋势。
随着需求的变化,特别是在这技术日新月异的时代。你也许不知道以下这些技术,但想要提高或者完善你的技能,这些因素都是你需要关系(尤其是那些初学者)。能够了解Javascript的发展走向还是能够让你更好的进入这个领域。
那么到底2016年javascript开发方向是什么(或者2017年又会有什么走向)?
node.js已经是我们都知道的,后面的内容我们也不会提它,因为太有名气了………..
React & Redux
2015年是React获得肯定的一年,越来越多的开发者在2014年尾声开始抱怨Angularjs的一些问题,也有新闻说道,Angular2将会和Angular 1 不兼容。
如今的现状是,Angular1 仍然是Github上最受关注的,同时缓慢增长,而React正快速的填补这个缺口。
图中的数据基于互联网
也许这张react, angular, and angular2, 在npm下载数量图能够更好的反应这个问题:
出自 NPM 走势
但是,这些数据并不能真实的代表这些框架的使用情况,有一点要考虑的是自从Angular1被Angular2替代之后的并没有任何升级,更不必说,React不是一个框架,不能够和AngularJS一起用。所以说,这2者其实是没法放在一起对比的。
尽管如此,大概在去年一年里,JavaScript社区对React的支持比Angularjs要多一些。
看图表,你可能会问:在8月后发生了什么?React在npm的下载数量突然以指数倍的方式暴涨,Github的关注数量快要接近AngularJS的数量。
同时,Redux出现,由它的创作人Dan Abramov发布 在ReactEurope2015 7月的会议上。Redux是一个类似flux的实现,让很多开发者确信这更适合并能够推动React的发展。
在Redux出现前,React走过一段不寻常的旅程,开发者需要自己去方法去实现”Flux”的功能。很多很好的实现方式涌现出来,但对于Javascript开发者来说还是缺少一个全面完整的解决方案。因此尽管React在DOM表现层处理的有多优秀,开发者还是对采用这个技术到项目中保留自己的意见。
如今,随着越来越多的开发者开始关注和使用Redux并且认识到,测试和debug JavaScript是如此方便。Redux开始替代Flux成为了新的赢家。
由于2016年Javascript在前端领域的地位,同样地,React 和 Redux也变的炙手可热了。知名公司如:Netflix,Dropbox, 雅虎 都已经开始使用React,并给与很大的信心。
尽管这样,Facebook的Relay框架在2017年成为Redux的最大挑战者。
You Might Also Want to Read: Getting Started With React & Redux: An Intro
其他感兴趣的框架
那么还有什么别的框架?还有一些相对关注低一些的,但被炒做的一些框架。
Angular2
谷歌和微软合作开发的框架Angular2,或者说是用微软的TypeScript开发的更易管理的Angularjs2。这是什么意思呢?大型公司(一些非技术性的公司)可能会关注Angularjs2, 特别是使用了微软的.NET框架的。从去年开始,微软也开始推动.NET的开源工作,使开发者能够更好的使用。
随着Angular2的重写,整个过程希望能够修改Angular1 app开发的一系列问题,目前为止效果明显。谷歌也相信未来是属于互联网开发,Angular2 也会支持web组件开发,使其有能力支持更好的展现。
然而,不管Angular团队如何努力的带领开发者从Angular 1 引导向Angular2, Angular社区对Angular的取舍还是分成2大阵营。重写导致Angular的停滞不前和React逐渐火热,而这个势头同时正在加剧。
Angular2 是否能够和 Angular1 当初一样成功,并不能完全肯定,在Javascript社区也众说纷纭。Angular2 还是在这个Javascript和web开发的”未来”中有成功的可能性,但2016显然不是Angular2,特别是它还是在beta版本。对于那先不喜欢复杂react app 需要配置很多东东的开发者来说,Angular2 还是可以选择的。
Meteor
Meteor在Github的关注和下载始终是稳固上升中,和React,Angular 的发展相似。这是一款轻量级的,全栈式的,有鲜明特这的一款Javascript框架,很多开发者用它工作能从框架中发现很多新颖有趣的地方。meteor被认为是一款原型式框架,而且对初级开发者非常友善,能够较快上手。
然而,使用Meteor起来又是另一种情况。那些学过Angular1 或者是一些Rails的都需要大量神秘的隐藏配置,而在Meteor也是同样的。Meteor不像React 和AngularJS, 企业中可能会有一些专业的开发人员,而Meteor没有,这也是不被考虑的因素之一。虽然AngularJS有很多问题,但有谷歌的技术团队撑腰,而使用Meteor不一样, 无论是前后端开发,都会有很多技术风险。Meteor要更广泛的被广大开发者使用还是需要解决很多问题。
更别提那些数据库问题,由于Mongodb是Meteor的默认数据库,而一些开发者对MongoDB的开发模式不是很感兴趣(阅后即焚的小型数据库)。Meteor运行必须要起SQL,而这点也没有很好的支持。
不用说,Meteor在2016甚至2017年能够占到的份额都会比较少。对于构建大型负载的应用,大部分专业开发者对这个技术还是持保留意见。
ES6 终于要普及了
2016年,如果你是个Javascript开发人员,而你的应用还没有采用ES2015开发规范,你要好好问问自己,你到底在干什么?
但为什么用Babel和TypeScript处理ES6 app项目呢?Babel大部分是转换ES6的ES5,TypeScript 是 可选的静态类型和简单类型的Javascript的超集。
Facebook创造了Babel,Babel只支持静态类型检查的Javascript, 并做转换,所以这2者都是以不同目的的方式创造出来,没有可比性。因此这2者一般不会同时用。
Babel是的第一个连接ES5和ES6项目的语言,而TypeScript在ES6的支持也快要赶超ES6了。在github上Babel关注度更高,更不用说还有React开发者会使用Babel + Webpack的组合。
You Might Also Want to Read: Setting Up a React Environment Using Npm, Babel, and Webpack
然而,在最近,如果你看一些Javascript的解决方案,那些代码库都是用TypeScript做的,TypeScript也变得越来越火,越多人挑选了。Javascript之前给人的印象是比较难懂,难调试,不仅仅是它是一门动态语言,而且缺少类型检查的机制。TypeScript很好的支持了一点,而且TypeScript还有一个比Flow更大的社区支持。
除此之外,我们看下在谷歌趋势上对TypeScript的关注走势图