CoffeeScript在编写过程之中,相对于JS可以带来很多便利性,但是同时也会引入一些问题,JS相对于Coffee来说有一些繁琐,但是相对严谨。

这里会列出coffee诸多的坑,其实也不能算是坑,只是在还没有灵活运用时,很难排查的一些小问题,也要注意一下自己平时的编写习惯。

  • 在生产过程中的一个案例。
1
2
3
4
5
6
7
{
mode,
base_cdn,
# data : encodeURIComponent JSON.stringify { formData : body, type },
web_config: JSON.stringify web_config,
user : locals.user
}

这个JSON原来的代码是:

1
2
3
4
5
6
{
mode,
base_cdn,
# data : encodeURIComponent JSON.stringify { formData : body, type },
web_config: JSON.stringify web_config,
}

因为Coffee在描述JSON时候无需添加逗号,然后写这段代码的同事恰好将每一行后面都加上了逗号,然后我一看,没啥问题,紧接着加了一个属性”user”,乍一看,基于coffee松散的语法,毫无任何问题。然后,发现后面,这个JSON的user属性始终是undefined,因为后面有很长一段逻辑,一直以为是后面的逻辑出了问题,经过一个下午的调试后,才开始怀疑是JSON的问题,编译一看,顿时内牛满面:

1
2
3
4
5
6
7
{
mode: mode,
base_cdn: base_cdn,
web_config: JSON.stringify(web_config, {
user: locals.user
}
}