程序员,与JavaScript 疲劳症SayBye!

程序员,与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/

相关推荐