1. nodejs闲聊
nodejs 是什么
nodejs不是框架;jquery是框架
nodejs 是js 运行时的运行环境,类比java中jvm
只要安装对应版本的nodejs,那你就可以用js来开发后台程序。
2. node 和 vue 关系
vue是前端框架,js的三大框架之一
node是后端开发语言,同php、java、c#一样的
3. node 使用
文档
1. 异步并发请求
async
eventproxy
当你需要去多个源 (一般是小于 10 个) 汇总数据的时候,用 eventproxy 方便;
当你需要用到队列,需要控制并发数,或者你喜欢函数式编程思维时,使用 async。
大部分场景是前者,所以大部分时间用 eventproxy 。
网站有并发连接数限制?
爬虫: rate limit 的限制?
异步到底为何异步,Node.js 为何单线程却能并发
@朴灵 的 《九浅一深 Node.js》
js 写异步并发,并处理数据 链接
如果你要并发异步获取两三个地址的数据,并且要在获取到数据之后,对这些数据一起进行利用的话,常规的写法是自己维护一个计数器。
先定义一个 var count = 0,然后每次抓取成功以后,就
count++。如果你是要抓取三个源的数据,由于你根本不知道这些异步操作到底谁先完成,那么每次当抓取成功的时候,就判断一下 count
=== 3。当值为真时,使用另一个函数继续完成操作。
eventproxy 就起到了这个计数器的作用,它来帮你管理到底这些异步操作是否完成,完成之后,它会自动调用你提供的处理函数,并将抓取到的数据当参数传过来。
eventproxy 并发请求,时间取决于最慢的请求
2. node 爬虫
使用 superagent 抓取网页
使用 cheerio 库 分析网页
用到三个依赖,分别是 express,superagent 和 cheerio。
superagent ( ) 是个 http 方面的库,可以发起 get 或 post 请求。
cheerio ( ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。
前端测试正则表达式
《正则表达式 30 分钟入门教程》
《正则表达式之:零宽断言不『消费』》
正则表达式在线调试
3. 线上部署
heroku 是弄 ruby 的 paas 起家,现在支持多种语言环境,更甚的是它强大的 add-on 服务。
paas 平台相信大家都不陌生。Google 有 gae,国内新浪有 sae。paas 平台相对 vps
来说,不需要你配置服务器,不需要装数据库,也不需要理会负载均衡。这一切都可以在平台上直接获取。
你只要专注自己的业务,把应用的逻辑写好,然后发布上去,应用自然就上线了。数据库方面,如果你用 mysql,那么你可以从平台商那里得到一个
mysql 的地址、账号和密码,直接连接就能用。如果应用的流量增大,需要横向拓展,则只用去到 paas
平台的管理页面,增大服务器实例的数量即可,负载均衡会自动帮你完成。
heroku 的 addon
这个 addon 确实是个神奇的东西。这些 addon 提供商,有些提供 redis 的服务,有些提供 mongodb,有些提供
mysql。你可以直接在 heroku 上面进行购买,然后 heroku 就会提供一段相应服务的地址和账号密码给你用来连接。 大家可以去
这个页面看看,玲琅满目各种应用可以方便接入。
之所以这类服务有市场,也是因为亚马逊的 aws 非常牛逼。为什么这么说呢,因为网络速度啊。 如果现在在国内,你在 ucloud
买个主机,然后用个阿里云的 rds,那么应用的响应速度会因为 mysql 连接的问题卡得动不了。但在 heroku 这里,提供商们,包括
heroku 自己,都是构建在 aws 上面,这样一来,各种服务的互通其实走的是内网,速度很可以接受,于是各种 addon
提供商就做起来了。
暂无评论内容