原标题:致程序员:别无谓焦虑,快学习现代 JavaScript 生态体系
编者按:JavaScript 是前端开发的统治性语言。但是这门语言的多变和生态体系之复杂让人又爱又恨,哪怕是接触了很久的人。作为开发者指南的撰写者,Flavio Copes 告诉 你对待JavaScript的正确态度应该是什么样的。
直到一个月前我甚至还没法克服看一眼JavaScript就会产生焦虑感。我100%属于所谓的JavaScript疲劳症,一直都没法摆脱。这种情况已经持续好几年了。
不过,今天我已经爱上了JavaScript和它的生态体系。
这是怎么做到的呢?
其实我早在1990年代就一直以这样或那样的方式在使用着JavaScript,而且我的书架上还有好几本书,里面的内容今天看起来非常有趣,充斥着document.write这样的语句。
最近几年JavaScript已经发生了巨大改变。一开始,我都没有办法弄清楚发生了什么事情。我没有办法一下子接受那么多的变化。JavaScript正在改变但我还在抵触。我花费了很大精力去学好它,现在它却变了。
有一篇很火的帖子叫做《 给恐龙准备的现代JavaScript解析 》,文后有一条评论我非常感同身受:“如果你不是从一开始接触的话学习现代JavaScript会很艰难。”
要我说要是一开始就了解JavaScript的话(是的,我就是那么老)会更加棘手
——Tim Tate
2012年,我很认真地研究了一下JavaScript和Node.js,我从来没有经历过变化幅度像ES6这么大的语言。上一次大的改变还是在2009年的ES5了。ES6几乎改变了一切。JavaScript的这种翻新是如此之大以至于每天你都要去查规范但其实又不知道他们是不是已经制订了,你得盯住Twitter上的每个人看他们在谈什么,一不留神可能就会错过下一个大东西。
Var被扔进了垃圾堆。
Function再也不存在了。
基于原型的继承,这个东西要花很长一段时间才能学好,也不见了,隐藏在一堆一堆类的下面。
这些还只是表面。
一个很大的变化是Building。
我们从一个非常简单的东西,包括我们支持script标签的JavaScript,变成有构建步骤,将我们的语言编译成某个无法理解的大型文件这么复杂的东西。对此我一开始是非常抗拒的,完全没有办法接受要编译这件事情。
不过当Babel这个生力军出现时,我一开始反抗得更加厉害,但最后我举起了白旗,我投敌了。
我意识到Babel不是什么引领未来的库,没有先进功能,而当那些先进功能登陆浏览器时我们会忘掉Babel的。不,Babel并没有消失,在可预见的未来都会如此。
当ES2017完全登陆浏览器时,Babel会支持ES2018、ES2019等等。你没法逃避。拥抱未来吧,Babel是你的朋友。
现如今工具是JavaScript最困难的部分之一。是,你可以学习Webpack的一切,但当你开始做的时候,你还是会无视一切使用像create-react-app、React Boilerplate这样现成的解决方案,让它们处理最细微的细节,你只用关心编码就好。
不要从设置环境开始,学会使用Glitch:探索现代JavaScript没有更比这更简单的东西了。
ES6太大了,大到ECMAScript委员会都决定下次发布要小一点。这也是ES6被称为ES205的原因,并且也是那一年的第一个发布——从现在起每年我们都会有一场发布。跟上形势变得更简单了,因为时间的限制,新版本的变化变少了,也更加可预测了(投降吧,变化总会有的)。
如果你跟我一样,你也许会关注Twitter上面很多引领潮流的人。也许是一些指点下一个大事物是什么的思想领袖。他们说要用X,其他人就都用X了。
也许他们喜欢用离标准很远的最新API来展示自己的代码片段,可这个其实在浏览器里面用一个flag就能实现。
他们也许有很好的理由。但你没有。不要掉进新的花哨玩意儿的陷阱,专注于你的工作。
有个玩笑说的是“本月的JavaScript框架的口味是什么样的”或者“每周都会有一个新的库”。真的,有很多人在做住JavaScript的东西,这很好,它带来了创新和演变,JavaScript过去几年所经历的东西对于该语言生态体系意义重大。
但是需要注意的是大的东西变动不是很大。
React已经5岁了。
Vue也有4岁了。
4年的时间在技术业已经是很长的了。那些都属于稳定技术了。现在就学习它们吧,它们也会存在很长一段时间的——不会那么快消失的。
你有很多时间成为其中任意一种框架的专家,它们在短时间内是不会消失的。
话虽如此,任何东西都有生命周期。
几年前到处都用jQuery,现在新项目已经很少碰这个了。
2013年时 Backbone.js发展得很大。现在它已经在地图上消失了。
CoffeeScript已经从地球表面抹去。
Ember.js、Angular.js和Meteor火了好几年,但现在大家讨论最多的似乎是React、Vue和Angular(这个跟Angular.js不一样)。
这些主流框架的每个周期通常都会持续好几年。我仍然有很多Ember.js应用跑得不错,如果他们还能做好自己的工作的话就没有升级的必要,我也不打算去碰它们。
技术会慢慢演变和成熟,然后大家会使用而不是讨论它们。
一些人不敏感,不过如果你看的东西足够多的话,你会发现有些人会鄙视一度人人都使用的技术——既然他们了解的东西更多,他们想要告诉你你是错的。
我用PHP已经有很长一段时间,对此早已习以为常,流行的东西有人质疑很正常。即便是Go这门语言,其出色的简洁性有时候也会为人所诟病。你总会见到有人对某个东西嗤之以鼻。
举个例子,Pieter Levels用一个PHP文件建设了一家大型的独立企业。看看那些评论是怎么说的吧。
但作为初学者你也许会碰到有人告诉你你选择了一门老技术,说现在已经没人用了,你应该用React才对。
别理他们,把他们从你脑子里赶走。
记住:如果这东西对你有效,那就是合适的技术栈。
如果这东西对你有效,那就是合适的技术栈。
大多数时候那些技术都是技术巨头开发的,其需求跟你的或者你的小团队的需求完全是不一样的。用你了解的东西去做,你未必需要用先进的技术才能做出不一样的东西。
另一个极端是过度工程。不要因为显得自己更聪明而使用某种技术。要学会什么时候该用某个框架或者库。
尽管看你的Twitter似乎让人觉得你是个无所不知的人,但没人什么都懂。一个人不可能学会前端开发的所有东西。你一辈子都学不完。绝对没办法保证你能学完。
React和Vue正好文档都很出色并不是偶然的。
这是它们能取得成功的关键部分。
去年ECMAScript语言引进了await/async ,现在这一功能已经被使用得很多了。基于promise的代码看起来很糟糕,你会感受到重写一切的紧迫性。
别这么做,相反,要把新功能用到你编写的新代码上。
今年也会发生同样的事情,发生在ES2018身上。每个人都会指指点点,然后回去继续工作,然后我们又会开始讨论ES2019的功能。
拥抱变化。这要比把赌注押在一个已经停滞不前,不出几年就会变得无关紧要的技术上面好得多: JavaScript坚挺得很!
在Web平台上往往开发需要你不断去学习新东西,哪怕只是想找出它能做什么也需要。
有时候你只需要学习其中的20%就足以应付80%的事情而不需要钻研那些边缘情况。
相对于其他语言来说JavaScript还非常年轻,最近几年它非常流行并且能够做出极大改变。它每天都能吸引和很多新的天才的开发者加入进来,未来10到20年我们会用什么样的JavaScript写代码呢?这事儿想想就挺让人激动的。
原文链接: https://hackernoon.com/how-i-stopped-worrying-and-learned-to-love-the-javascript-ecosystem-692c51030342
编译组出品。编辑:郝鹏程。