使用NodeJS采集老黄历网(使用http按顺序采集)

使用NodeJS采集老黄历网,将网页保存到本地,使用了http。

因为目标网站是gbk编码,需要单独安装iconv-lite进行转换。

因为http.get是异步的,流程控制使用了之前写的PromiseDemo(http://www.miaoqiyuan.cn/p/promise),采集完一个才继续采集下一个。

日期返回使用了前几天下的date.js(http://www.miaoqiyuan.cn/p/date-range)

废话少说,直接上代码: 继续阅读

用JS 重新造了个轮子,农历计算脚本,有详细的注释

工作中有时需要农历计算,之前从网上找了个JS版本的(摘自wannianli.htm,网上导出都是),直接调用就可以了,非常方便。有优点就有缺点,该版本文件有点大(20KB以上);有很多代码用不到;代码注释不够直白;理解其原理有点麻烦。

之前用过多次,对原理也不是很清楚,最近项目需要,重新造了一遍轮子。包含源码注释的文件控制在7KB以内,压缩后再3KB以内。 继续阅读

根据 UserAgent 判断网页是在浏览器、或在微信、或在APP中

根据 UserAgent 是否存在 Android,或 iPhone 可以判断网页是运行在 苹果手机 或 微信手机中。具体是安卓的在 微信中、还是在浏览器中、还是在APP中,在iPhone的 微信中、还是在浏览器中、还是在WebApp中,都可以通过UserAgent来判断。

前端JS 获取 UserAgent 可以使用:navigator.userAgent。
后端程序可以使用 HTTP_USER_AGENT 来获取。比如PHP可以用 $_SERVER[‘HTTP_USER_AGENT’],asp可以用 Server.Servervariables(‘HTTP_USER_AGENT’) 。

继续阅读

Promise的简单实现

ES6 原生提供了 Promise 对象,大大简化了 callback 的代码维护难度。使用promise对象之后可以使用一种链式调用的方式来组织代码;让代码更加的直观。

如果想在老浏览器中使用 Promise,需要使用第三方库。实际实现远离并不复杂,仅需要十几行代码,就能实现类似的效果(实际还是有点区别的)。

代码如下: 继续阅读