gulp是我编译sass与js的不二利器(比webpack好用),但这几天突然发现,gulp watch时,通常莫名其妙的退出,然后实时编译就断了,然后你还在奇怪为什么改了样式没反应。

gulp实现编译sass时,容易频繁出错,比如你写了个ma没按tab就手贱按了保存,sass一编译,不认识ma,就报错了,如果此时导致watch被退出,那后续编译就中断了。报错导致退出,很正常,但如果报错很频繁又每次都导致退出,那人都要疯了。

于是我只有找一下如何让gulp的watch任务在出错时不自动退出。

很简单,我直接说结论

在gulp的task里,加入onerror监听,在监听函数中,处理错误并触发end。代码如下:继续阅读

nodejs,本来是用来开发网站的,但用它来写小工具真是好用到不行,反而用纯JS语法来开发一个整站,看起来不那么容易和靠谱。不过经过这么几年的发展,nodejs已经从0.12升级到了7.5(不得不说版本变化太快同样会给人“不稳定”的印象),大量框架纷纷发布,日益成熟。用来做web开发,应该是足够了。

比如现在想开发一个网站,可使用的框架有: Hapi, Express.js, Restify 与 Koa。

记得我刚开始学习nodejs建站时,网上全是express的文章,没办法,因为当时除了express,其他框架都还没出生,更别提推广了。

而express给我的印象,并不好。首先是他默认的模板引擎jade,让我很抵制——我并不认为有什么比html语法更具描述性,嵌套能力更强的文本标记语言了;其次是express太轻量级了,处理一个表单都要引入“中间件”,在我看来,处理表单(以及文件上传)不应该是一个web框架最基本的能力吗?偏偏要独立出来。基于这两个主要原因,一直没能将express学完。

restify,我也用过,人如其名,他主要是用来做restful的网络接口,要用来做整站(比如动态生成静态html, 处理文件上传等)那就是用错地儿了。继续阅读

2017/3/24: 由评论区网友 clearbug 提供,在windows下最简单的办法是:

1
2
const util = require('util');
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));

↓↓↓↓想看我以前的思路可以继续阅读下面的文章↓↓↓↓

在工作中遇到一种需求:我需要请求后端数据,但请求数据前需要登陆,获得一个token。登陆方式是向一个json地址post数据即可。之前我的做法是,用chrome插件postman来实现登陆动作。但后来无意中发现,postman内存占用超高!即使我并没有使用它。这让我很不爽。

后来一想,实现这么简单的一个动作,用这么重的插件,对于我这样一个会nodejs的前端程序员是不是太Low了?简直不好意思对人讲自己会nodejs!

于是我就花了点时间写了个简单的脚本。本文记录一下开发过程。

思路大概是,用nodejs脚本发请求,并将返回结果中的token自动复制到剪切板,于是我只用在调试代码中,ctrl+v就行了。

思路很简单,但实现起来居然坑很多。

nodejs没有直接复制到剪切板的API!

非常简单的功能,但nodejs没有提供。但不要绝望,因为nodejs可以调用系统命令,而系统命令中有不少可以操作剪切板的命令。

我google之后,由于系统是windows,所以考虑使用windows cmd命令中的clip,来实现复制到剪切板的功能。

nodejs调用系统命令(cmd)

var exec = require(‘child_process’).exec,然后你就可以像普通函数一样调用它,如:exec(‘echo 111’);

clip命令的坑

在cmd里,实现复制文本到剪切板最简单的命令是:echo 123456 | clip。本来,在nodejs中拼出这样一句语句,交给child_process.exec执行就可以了。但这个命令的执行结果,有个我无法忍受的bug:复制出来的文本,最后有个换行符(echo造成的)!我不可能在ctrl+v后,还要按几下删除键才能ctrl+s啊!

当时让我很纠结,我很奇怪微软连这么简单的命令都没作好。但无奈事情还是要做的,只有继续寻找解决办法。于是有了下面这个不经过echo的方式:继续阅读

这周发了个etpl的node包装器,到npm上,以及对应的github地址:https://github.com/wslx520/etpl-wrap

为什么会有etpl-wrap?

etpl是我用过的一款非常强大的模板引擎,该有的功能都有。

etpl是可以用在node环境下的,但用法与我想像中的不一样。

这就要从我学习koa说起了,我学的koa2,他有一个koa-views的中间件,用来接入渲染模板文件的功能。但理所当然的是,无法与etpl配合起来使用。继续阅读