代码 > koa,yield与co库

2016-11-16

目前我最欣赏的程序员是express的作者TJ。

最近准备用node js重写这个网站,发现TJ的新作koa似乎已经到了很使用的阶段,花了两小时研究了下。

刚开始看得是一头雾水。为什么koa demo 里的yield的用法和mdn的说法完全不同,为什么yeild这么特殊,这玩意到底什么鬼。

慢慢的理清了思路,找到了对的思路,才明白了过来。

不得不说,直介绍是什么,不说干什么用的文章到底有什么用……

首先,ES 6里引入了generator的概念.

通过代星号的函数可以常见生成器(特殊类)。

  1. 生成器上,有一段业务代码,
  2. 可以通过生成器生成函数(实例化类),调用可以执行生成器中的业务代码。
  3. 生成器中的代码依然不能执行异步代码,遇到 yield会中断
  4. 本身这一切不怎么神奇,但TJ大神写了个神奇的库叫CO。CO库可以直接调用生成器,执行业务代码。业务代码的yield只要跟的参数是promise或者thunk包装的异步函数,就能在异步结束后在异步代码中继续执行下面的代码,甚至可以有返回值。
  5. 这样,配合特殊格式的异步函数,把yield在结构上当成了类似call方法的同步函数。整个业务代码可以和同步代码一样有极强的可读性。异步代码尽可能简化,可以用其他库打包。
  6. 最后,代码看着像函数化的同步代码,用着也像。
koa其实就是个基于CO重构的express。
 
其实每个做过Node js的程序员,或多或少的都会写过一些类似的流程控制代码。当然,无疑TJ是写的最好的,考虑的最多,用的最广泛。
 
我真是爱死了这个设计出生的程序员了。

关于co可以参考 http://web.jobbole.com/85901/

工地 > 服务器恢复上线

2016-11-15

lets encrypt 自动签发证书Ok.

nginx,mysql,phpmyadmin,网站全部docker化Ok.

折腾了不短时间,主要很多docker image 文档太少了

工地 > 网站下线,服务器重置

2016-11-15

更换服务器暂缓。

服务器重置。

服务docker化。

lets encrypt自动化签发

工地 > 有一些计划,博客的语言和服务器准备调整一下

2016-11-14

准备从php切换为nodeJS。

准备从Linode转到国内的腾讯云或者青云。

做一些改变。

风景 > 海南游记

2016-10-20
海南游记

第一次带娃远游,为了照顾娃不要飞太长时间,去了不怎么感冒的海南。

作为我目前最大的兴趣爱好,去之前,入了FE 16-35 f4,做了简单的拍摄计划,可惜天不如人愿,去的时候夹在两次台风之间。计划完全被打乱。

 

原计划是第一天去蜈支州岛,晚上乘着岛上无人看看能否撸个星空,白天拍个日出,剩下的几天去亚龙湾或者椰梦长廊拍拍日落和娃。

结果呢,天天下雨,只有一天放晴,上不了岛,出不了游。好在乘两个不下雨的日出在亚龙湾拍了下。但天气不佳,景色有限,水平又菜,没啥好片。

总的来说,感觉蜈支州岛没上颇为可惜,亚龙湾中规中据,比wakiki都差了不少,三亚湾的椰梦长廊实在糟心,不如不去。倒是日落十分去的天涯海角比预期的要好。毕竟靠海朝西有礁石,拍拍旅游照不错。

 

短短的4天3夜,连夜飞回了上海。唯一留恋的,应该是每天不断的椰青了。

代码 > 开始使用visual studio code

2016-09-06

这两天偶然用了下vs code。发现个方面的感觉都非常棒。体验很好。对比了一下作netbeans和atom发现不论速度/外观上都是目前最优秀的。决定花一段时间习惯下这个编辑器。

微距 > ^_^

2016-08-02
^_^

风景 > 西塘拂晓

2016-05-14
西塘拂晓

西塘。

实在是一个不值得去的地方。

只有在日出前后。

脱离了喧嚣。

才有一点点风景。