原标题: 致程序员: 别无谓焦虑, 快学习现代 JavaScript 生态体系
编者按: JavaScript 是前端开发的统治性语言. 但是这门语言的多变和生态体系之复杂让人又爱又恨, 哪怕是接触了很久的人. 作为开发者指南的撰写者, Flavio Copes 告诉 https://hackernoon.com/how-i-stopped-worrying-and-learned-to-love-the-javascript-ecosystem-692c51030342 你对待 JavaScript 的正确态度应该是什么样的.
直到一个月前我甚至还没法克服看一眼 JavaScript 就会产生焦虑感. 我 100% 属于所谓的 JavaScript 疲劳症, 一直都没法摆脱. 这种情况已经持续好几年了.
不过, 今天我已经爱上了 JavaScript 和它的生态体系.
这是怎么做到的呢?
其实我早在 1990 年代就一直以这样或那样的方式在使用着 JavaScript, 而且我的书架上还有好几本书, 里面的内容今天看起来非常有趣, 充斥着 document.write 这样的语句.
最近几年 JavaScript 已经发生了巨大改变. 一开始, 我都没有办法弄清楚发生了什么事情. 我没有办法一下子接受那么多的变化. JavaScript 正在改变但我还在抵触. 我花费了很大精力去学好它, 现在它却变了.
有一篇很火的帖子叫做 给恐龙准备的现代 JavaScript 解析 https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70 , 文后有一条评论我非常感同身受:"如果你不是从一开始接触的话学习现代 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 应用跑得不错, 如果他们还能做好自己的工作的话就没有升级的必要, 我也不打算去碰它们.
技术会慢慢演变和成熟, 然后大家会使用而不是讨论它们.
用 jQuery 并不蠢
一些人不敏感, 不过如果你看的东西足够多的话, 你会发现有些人会鄙视一度人人都使用的技术 -- 既然他们了解的东西更多, 他们想要告诉你你是错的.
我用 PHP 已经有很长一段时间, 对此早已习以为常, 流行的东西有人质疑很正常. 即便是 Go 这门语言, 其出色的简洁性有时候也会为人所诟病. 你总会见到有人对某个东西嗤之以鼻.
举个例子, Pieter Levels 用一个 PHP 文件建设了一家大型的独立企业. 看看那些评论是怎么说的吧.
但作为初学者你也许会碰到有人告诉你你选择了一门老技术, 说现在已经没人用了, 你应该用 React 才对.
别理他们, 把他们从你脑子里赶走.
记住: 如果这东西对你有效, 那就是合适的技术栈.
如果这东西对你有效, 那就是合适的技术栈.
大多数时候那些技术都是技术巨头开发的, 其需求跟你的或者你的小团队的需求完全是不一样的. 用你了解的东西去做, 你未必需要用先进的技术才能做出不一样的东西.
另一个极端是过度工程. 不要因为显得自己更聪明而使用某种技术. 要学会什么时候该用某个框架或者库.
你没有知道一切的义务. 找到你的平衡.
尽管看你的 Twitter 似乎让人觉得你是个无所不知的人, 但没人什么都懂. 一个人不可能学会前端开发的所有东西. 你一辈子都学不完. 绝对没办法保证你能学完.
选择文档对用户友好的技术
React 和 Vue 正好文档都很出色并不是偶然的.
这是它们能取得成功的关键部分.
JavaScript 还会再变
去年 ECMAScript 语言引进了 await/async , 现在这一功能已经被使用得很多了. 基于 promise 的代码看起来很糟糕, 你会感受到重写一切的紧迫性.
别这么做, 相反, 要把新功能用到你编写的新代码上.
今年也会发生同样的事情, 发生在 ES2018 身上. 每个人都会指指点点, 然后回去继续工作, 然后我们又会开始讨论 ES2019 的功能.
拥抱变化. 这要比把赌注押在一个已经停滞不前, 不出几年就会变得无关紧要的技术上面好得多: JavaScript 坚挺得很!
学习基础的东西, 然后选择你的旅程
在 Web 平台上往往开发需要你不断去学习新东西, 哪怕只是想找出它能做什么也需要.
有时候你只需要学习其中的 20% 就足以应付 80% 的事情而不需要钻研那些边缘情况.
旅程才刚刚开始
相对于其他语言来说 JavaScript 还非常年轻, 最近几年它非常流行并且能够做出极大改变. 它每天都能吸引和很多新的天才的开发者加入进来, 未来 10 到 20 年我们会用什么样的 JavaScript 写代码呢? 这事儿想想就挺让人激动的.
来源: http://www.tuicool.com/articles/aQ7ZzmR