扯淡js和es6
自从 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 打交道还是很有必要的,期间踩过的坑,全都是升级经验包啊。