skyADMIN

在2016年学javascript是一种什么样的体验?

以前读了一篇文章,黑docker的(据说只是娱乐,先贬后褒,后面写了一篇正规的给docker正名),今天还是昨天,又出现了一篇黑js的,题目就叫,在2016年学javascript是一种什么样的体验。

截取头尾说明一下文章内容大概是什么样的吧:

嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化。听说你是这里对新技术最了解的 Web 开发工程师?

准确地说,我是一名「前端工程师」。不过你算是找对人了。我对今年的技术别提多熟了,前端可视化、音乐播放器、能踢足球的无人机,你尽管问吧。我刚去 JS 大会和 React 大会逛了一圈,没有什么新技术是我不知道的。

厉害。是这样的,我要开发一个网页,用来展示用户的最新动态。我想我应该通过后端接口获取数据,然后用一个 table 来展示数据,用户可以对数据进行排序。如果服务器上的数据变化了,我还需要更新这个 table 。我的思路是用 jQuery 来做。

可别用 jQuery !现在哪还有人用 jQuery 。现在是 2016 年了,你绝对应该用 React 。

哦,好吧, React 是什么?

React 是一个非常厉害的库, Facebook 的牛人写的。它能让页面更可控,性能极高,而且使用起来很简单。

听起来确实不错。我能用 React 展示服务器传来的数据吗?

当然可以,你只需要添加两个依赖,一个是 React ,一个是 React DOM

额,等下,为什么是两个库?

React 是我说的库, React DOM 是用来操作 DOM 的。因为这些 DOM 是用 JSX 写的,所以需要一个专门的库来操作。

JSX ? JSX 是什么?

JSX 是对 JS 的扩展,它看起来跟 XML 差不多,可以用来写 HTML ,你可以认为 JSX 是一种更优雅的 HTML 写法。

为什么不用 HTML 了……?

现在可是 2016 年啊,没有直接写 HTML 的。

对哦。好吧,加了这两个依赖,是不是就可以开始用 React 了?

不行哦。你需要添加 Babel ,然后才能用 React 。

Babel 是另一个库?

嗯, Babel 是一个转译工具, Babel 能把你写的 JS 转译成任意版本的 JS 。你不一定非要用 Babel ,但是如果你不用的话,你就只能写 ES5 的语法了。你知道的,现在是 2016 年,你怎么能不使用 ES2016+ 的语法呢? ES2016+ 多么酷啊。

ES5 是啥? ES2016+ 又是啥?我有点晕。

ES5 就是 ECMAScript 5 。大部分人都会使用 ES5 ,因为大部分浏览器都支持 ES5 。

ECMAScript 是啥……

你晓得的, JS 是 1995 年诞生的,而 JS 的标准是 1999 制定出来的。那时候 JavaScript 还叫做 Livescript ,只能运行在网景的浏览器里。那时真是混乱的年代,现在好了,我们有了 JS 的 7 个版本的规范。

7 个版本?那 ES5 和 ES2016+ 是?

分别是第 5 个版本和第 7 个版本。

诶,那第六个版本呢?

你说的是 ES6 。每个版本都是上一个版本的超集,所以你直接使用最新的 ES2016+ 就好了。

对哦。为什么不用 ES6 呢?

好吧,你可以用 ES6 ,但是你就用不到 async 和 await 这么酷的语法了。用 ES2016+ 比较好。用 ES6 的话你就只能用 generator 来控制异步任务流了。

 

……………………(大段省略,有兴趣自己去找)………………

然后我就能用上 Fetch 、 Promise 和各种炫酷的东西。

嗯,别忘了加上 Fetch 的 Polyfill ,因为 Safari 不支持 Fetch 。

你猜怎么着,我们就聊到这吧。我不做了,我不做 Web 了,我也不想再碰 JS 了。

没事,过不了几年,我们都会用 Elm 或者 WebAssembly 了。

我要回后端去了,我受不这些变动、版本更新、编译和转译了, JS 社区如果觉得有人能跟上它的脚步,那这个社区就是疯了。

我理解你。我建议你去 Python 社区。

为什么?

听说过 Python 3 吗?

呵呵,最后是不是顺手黑了一下Python?大概意思就是,现在的js到底在干什么,好像把一件本来很简单的事给做得超级复杂了,简直是吃饱了撑的。

虽然我觉得作者99%是在开玩笑,大部分javascripter们也能明白,但我还是想给小白级用户说明一下这一点……避免有的人真的相信了这一点然后找不到工作2333。

包括之前的docker那篇文章,也是类似的套路,就是提出一个蛮简单的场景,然后说明用最新的技术去做这么一个简单的东西有多么的复杂。

可是复杂的原因必然是有相应的需求,做简单的东西,当然可以用最简单的方法,谁也没有要求大家必须要用什么框架,什么工具。

但是那些复杂的需求导致的问题是真实存在的,就像回调地狱,一个简单的小程序不会有这个问题,不代表这个问题是不存在的,还有包管理,自动构建,状态管理,ES7……很开心看到前端开发在工程化、规范化的路上一路飞奔,说不定很快那条预言就能实现:一切可以用javascript编写的,终将用javascript编写。

噢对了,这篇文章还是很值得一读的,可以理一理2016年了,javascripter们该会什么,反正我很多都不会,现在很惶恐。

 

码字很辛苦,转载请注明来自环宇博客《在2016年学javascript是一种什么样的体验?》

评论