扯淡js和es6

2016-02-28

自从 js 通过 nodejs 统治了全世界码农之后,到处都是用 js 重新造的轮子。在这样的年头里,身为一位开发人员,如果你没写过 js,都不好意思和别人说自己是程序员了。为了成为符合潮流的程序员,我表示已入这个坑快一年了。

除去以前的小打小闹,严格意义上来说,我是通过去年搞Ember进入 js 界的。搞 Ember 被它那套潜规则恶心的不行,什么条条框框都必须按照一定的模版来写,你让我那个像写诗一样写代码的宗旨怎么办!这个有机会以后吐槽下。

Ember 配合它那个 cli,基本上把底层构建流那套杂七杂八的事情全给你弄好了,所以那个时候学点模板语言(Emblem.js),es6 语法以及那个flex 布局,基本上能出来几个看上去还不错的界面了。

公司给力,让我有机会今年继续接触 js。

这一次基本上是重零开始搭建了。今年流行什么?react,redux,koa,webpack,electron,gulp。。。然后这个新项目全部用进去了~

一个完整的技术体系是由一个个小技术点串起来的,对任何一个小技术点的含糊都会导致整条技术链出现断层,致使后续工作无法继续.现在正处于前期引入太多技术点,焦头烂额的还技术债中,好痛苦

这就是我当时在 twitter 上吐槽一次性引入太多自己都不太熟悉的技术之后的后果。

不过好处也是显而易见的,我看上去似乎学到了很多新技术。

es6 就是一个大蜜罐,里面是各种看上去诱人的 js 语法糖。

一旦开始用 es6 写 js,那种感觉倍儿爽。箭头函数,解构,数组展开,协程都是我是我的菜。不过一旦尝到甜头再想老老实实写不甜的代码就比较蛋疼了。node 的“和谐”(--harmony)参数感觉一点都不和谐,只兼容一部分 es6 特性,还不兼容该死的 cmd 和 amd 模块加载规则。行业通用的做法是使用 babel 把 es6 写的代码转化成 es5 来跑。

babel 也是一个大黑盒,它确实推动了 es6 的发展,不过 es6 转换到 es5 每次都需要这家伙,干嘛不直接让 node 和 v8 内置的了。

babel5 升级到 6 也是坑了我好久。你必须得选择一个Preset,其实就是针对 es6,es7 的语法特性,打包好的一系列转换规则。现在比较通用的应该是 es2015。

然后 babel 被分成了一系列 babel 开头的子包,generator 函数被转换后还得引入 Polyfill,总之得踩一大堆坑。

好不容易转换好了,发现调试也是一坑。

前端代码还好,通过 sourcemap 以及 debugger 功能,浏览器能自动断点然后看上下文。后端 node 代码就比较折腾了。虽然理论上 webstorm 是支持 sourcemap 打后端代码断点的,但有时候断点总是和源码不同步,十分影响心情。现在觉得写 server 代码的整天只能看日志查问题的童鞋真犀利。。。

好在一切都是有解决方案的,js 社区最近这么火,npm 的包数量也在疯狂增长(来源),感觉这事要统治世界的节奏。所以啊尽早的和 js 打交道还是很有必要的,期间踩过的坑,全都是升级经验包啊。