程序员,与JavaScript 疲劳症SayBye!
【CSDN 编者按】一直以来 JavaScript 都是饱受争议的编程语言,这门语言的多变和生态体系之复杂让人又爱又恨。最近几年 JavaScript 已经发生了巨大改变,就算是老鸟也时常会感到困扰。而作为开发者指南的撰写者Flavio Copes在患上了持续多年的“JavaScript 疲劳”时,现在却爱上了JavaScript 和它的生态系统,这到底是怎么一回事呢?一起来看看作者Flavio Copes怎么说?
以下为译文:
▌找准目标
直到几个月之前,我一看到 JavaScript 就会头疼。我一定是患上了所谓的“JavaScript 疲劳”而且完全没办法解脱,这种状况已经持续了好多年。
但现在,我爱上了 JavaScript 和它的生态系统。
这是怎么回事呢?
我从上个世纪九十年代就开始或多或少地使用 JavaScript,至今书架上还有几本以现在的眼光看来十分荒谬的书,里面充满了 document.write 语句。
最近几年,JavaScript 发生了翻天覆地的变化。最初,我完全跟不上变化的节奏,没办法一次性学习如此多的变化。JavaScript 在演变,而我却亘古不化。我花了大量时间学习 JavaScript,可它现在却在我眼皮下改变了。
一篇流行的博文《恐龙也能学会现代 JavaScript》(https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70)下面的一条评论吸引了我:“如果你从 JavaScript 诞生那一天就没学好 JavaScript,那么学习现代 JavaScript 可能会很困难。”
“我想说,如果你从 JavaScript 诞生那一天就学了 JavaScript(是的我暴露年龄了),那么(学习现代 JavaScript)就越发困难了。” ——Tim Tate
我从 2012 年开始正式地深入学习 JavaScript 和 Node.js,并且经历了诸如 ES6 等有史以来最大的语言变化。上一次巨大变化是 2009 年的 ES5。ES6 真的改变了一切。它把 JavaScript 搅得天翻地覆,以至于每天都在用的那些代码都可能会成为标准的一部分,可是你却无法判断哪些会成为标准,因而必须时刻紧跟趋势,因为 Twitter 上人们都在讨论哪些会成为下一个标准。
var 已被扫进了垃圾堆。
function 已经彻底消失。
我们花了大量时间学习的 prototype 继承已经不复存在,取而代之的是类。
而这只是冰山一角。
▌构建一切
最大的变更之一就是构建的出现。
最初 JavaScript 十分简单,只需把代码用 script 标签包含进来,但现在需要数个构建步骤,将代码编译成某种无法理解的巨大文件。最初我十分抗拒,做好了一切准备去抵抗构建的大潮。
当 Babel 的力量横扫一切时,尽管最初我仍负隅顽抗,但最后不得不投降,并且加入了构建的大军。
我原以为 Babel 仅仅是个库,它只是引入那些未来的尖端特性,当浏览器开始支持时,人们就会忘记 Babel。结果我错了。至少在可以预见的未来,Babel 会一直存在。
当浏览器全面支持 ES2017 时,Babel 将会支持 ES2018、ES2019 等。没有别的办法。要想拥抱未来,那就得跟 Babel 做朋友。
▌最简单的替代品
现在,工具链是 JavaScript 中最困难的一部分。没错,你可以去学习 Webpack,但最初还是忽略这些细节,直接使用那些事先做好的解决方案吧,比如 create-react-app(https://github.com/facebook/create-react-app),或 React Boilerplate(https://github.com/react-boilerplate/react-boilerplate),它们隐藏了一切细节,这样你只需要专注代码即可。
不要从设置环境开始,并通过 Glitch(https://glitch.com/)学习 JavaScript。记住,学习现代 JavaScript 没有捷径。
▌不再进行大型版本发布
ES6 的改变十分巨大,因此 ECMAScript 委员会决定以后进行小型发布。这就是为什么 ES6 也被称为 ES2015,而且是使用年份的第一次发布,因为以后每年都会有一次发布。由于发布时间变短,人们更容易跟随趋势,每次发布的变更也会更少、更可预测。
▌别理那些七嘴八舌的讨论
你可能像我一样在 Twitter 上关注了许多讨论最新进展的人。某些意见的领头人会讨论下一个最重要的功能是什么。他们会说,要用某个功能,因为所有人都在这么用。
也许他们还会给出一段代码,代码中使用的 API 甚至远未成为标准,但可以通过在浏览器中添加某个标志来使用。
也许他们有自己的理由,但你没有。不要落入这种新奇玩具的陷阱,保持专注于你的工作。
▌JavaScript 不会每周都有新框架
广为流传的一个笑话就是“别管是什么 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 的应用程序,它们运行得都很好,完全没必要更新,而且我也不打算更新。
“技术发展并成熟,然后脱离人们的话题,进入应用。”
▌使用 jQuery 毫不可耻
有些人脸皮很厚。但如果你经常上网看别人的讨论,就会发现某些人很鄙视那些曾经流行的技术,因为他们知道更好的选择,他们想对你说:你错了。
我曾经很长一段时间都在使用 PHP,所以已经习惯了这种情况——人们批评某些流行的东西很正常。即使是 Go,它既简单又十分出色,但也有人批评这一点。你总会发现相反的言论。
举个例子,我想引用下面 Pieter Levels 的这条推文,他曾经仅用了一个 PHP 文件创建了一个巨大的独立业务。看看评论吧:
https://twitter.com/levelsio/status/938707166508154880
但作为初学者,你可能会遇到一些人说你选择了没人用的旧技术,你应该用 React 云云。
别理他们。
▌记住:只要能抓耗子就是好猫
绝大部分情况下,技术完全是由有需求的大公司构建的,其需求可能与你的或你的小团队的需求完全不同。因此,用你自己的知识做出选择,不一定要用最尖端的技术。
现在,估计你不再需要 jQuery。但有可能根本不需要框架——纯 JavaScript 也能工作得很好。
另一个极端就是过度工程。不要因为某个技术貌似很聪明就用它。要深入了解,并知道何时使用框架或库才能获得收益。
▌你不需要掌握一切,把握平衡最重要
尽管一些人的 Twitter 看起来很光鲜,但实际上没有人掌握一切。没有任何人能够学习前端开发的所有知识。前端开发需要一生的学习,而且没有毕业这个词。
▌选择文档优秀的技术
React 和 Vue 拥有优秀的文档并不是偶然。
而是它们获得成功的关键之一。
▌JavaScript 还会进化
去年 ECMAScript 语言引入了 await/async,现在许多人都在用这个特性。基于 promise 的代码看起来很糟糕,你感觉需要重写一切。
不要这么做。写新代码的时候你可以用新的特性。
由于 ES2018,今年还会发生同样的事情。短时间内所有人都会谈论 ES2018,然后继续埋头自己的工作,再开始讨论 ES2019 的特性。
勇敢接受变化吧。变化远远好于把所有鸡蛋放在一个技术的篮子里,看着它在几年内停滞并消亡。JavaScript 会永生!
▌学一点基础知识,然后选择自己的路
Web 平台上的开发需要经常学习新东西,甚至有时只是为了研究可行性。
通常,花 20%的时间学习 80%所需的东西就够了,不需要去钻研太极端的东西。
▌旅程才刚刚开始
与其他语言相比,JavaScript 依然很年轻,它现在十分流行,而且未来几年内会发生很大的变化。每天,它都吸引了大量才华横溢的开发者,而想象下十年或二十年之后 JavaScript 可能的样子,是件十分激动人心的事情。
声明:本文已获作者 Flavio Copes 翻译授权。
原文:
https://hackernoon.com/how-i-stopped-worrying-and-learned-to-love-the-javascript-ecosystem-692c51030342
作者:Flavio Copes
译者:弯月
责编:张伟
附作者 Flavio Copes 博客网址:
https://flaviocopes.com/