nodejs技術(shù)棧

superagent

superagent是一個http方面的庫颊亮,用于發(fā)起請求

  • 基本用法
    request
      .post('http://meng.com')
      .send({name:'meng'})
      .set('Accept','application/json')
      .end(function(err,res){
          if(err || !res.ok){
          alert(err)
      }else{
          alert('you got' + JSON.stringify(res.body));
      })
    
  • end(),方法在于發(fā)送請求,并且有response
    request.get('/search').end(function(err,res){
      ...
    })
    
    es6語法禽炬,使用.then()代替.end()
    request.get('search').then(success,failure)
    
  • 支持的http方法米苹,默認(rèn)為get撵枢,也就是不顯示寫的話默認(rèn)為get
    request('search',function(err,res))
    #delete方法有點特殊羡藐,因為delete是保留字尾序,所以寫的時候用del
    request.del('/user/1').end(callback)
    
  • 設(shè)置頭部信息,set(),參數(shù)接受一對鍵值對或者一個對象(也就是設(shè)置很多頭部信息的時候可以寫在一個set里也可以鏈?zhǔn)秸{(diào)用set方法)
    request.get('/search').set('API-Key','foobar').end(callback)
    
  • GET請求迷郑,通過query()方法可以生成一個query-string
    request
      .get('/search')
      .query({query:'manny'})
      .query({range:'1..5})
      .query({order:'desc'})
      .end(callback)
    #生成的路徑為/search?query=manny&range=1..5&order=desc
    #當(dāng)然枝恋,也可以寫在一個里面,如果不想用鏈?zhǔn)秸{(diào)用的方式的話
    
  • HEAD請求
    request
      .head('/users')
      .query({email:'meng@126.com'})
      .end(callback)
    
  • POST/PUT請求
    request.post('/user')
      .set('Content-Type','application/json')
      .send('{"name":"m","pet":"dd"}')#要發(fā)送的數(shù)據(jù)
      .end(callback)
    
  • 設(shè)置Content-Type,可以用set(), 或者type()
    request.post('/user')
      .set('Content-Type','application/json')
    
    或者
    request.post('/user')
      .type('application/json')
    
  • Response 屬性
    • res.text,返回一個未經(jīng)過解析的response字符串(舉例來說如果get爬一個網(wǎng)頁嗡害,得到的就是整個網(wǎng)頁的源碼)
    • res.body,目前的理解是解析后的數(shù)據(jù)焚碌,當(dāng)然如果是解析后,當(dāng)然要設(shè)置過'application/json'
    • res.header,返回解析后的header對象
  • 終止一個請求霸妹,req.abort()即可

cheerio基本用法

類似于python的beautifulsoup模塊十电,解析HTML代碼,語法類似jquery

  • 最基本的用法
    var cheerio = require('cheerio')
    var $ = cheerio.load(htmlCode)
    
  • 對爬取的網(wǎng)頁進行處理
    #首先獲得整個頁面的html代碼
    superagent.get('http://baidu.com').end(function(err,sres){
      var $ = cheerio.load(sres.text)
      #此時$的用法就會jquery一模一樣了叹螟,查找元素鹃骂,設(shè)置屬性都一樣,類比吧
    })
    

eventproxy

  • 基本用法

    //得到eventproxy實例
    var ep = new EventProxy()
    //all方法將handler注冊到事件組合上罢绽,也相當(dāng)于監(jiān)聽了這個事件組合
    //當(dāng)event1畏线,event2都完成之后,也就是ep接收到ep.emit()函數(shù)之后才會執(zhí)行最后的函數(shù)
    ep.all('event1','event2',function(event1,event2){
      //函數(shù)的參數(shù)對應(yīng)各自的事件名
    })
    //觸發(fā)良价,這里假設(shè)event1是數(shù)據(jù)庫的一個操作
    db.get('sql',function(err,result){
      ep.emit('event1',result)
    })
    
  • 多類型異步協(xié)作

    //就是上面的用法寝殴,所謂多類型就是多個獨立、并且不相關(guān)的事件
    //all事件有兩種注冊方法明垢,第一種如上蚣常,第二種如下
    var ep = EventProxy.create('event1','event2',function(event1,event2){
      ...
    })
    
  • 重復(fù)異步協(xié)作

    抽象出來,一種類型的事件重復(fù)做很多次的時候用

    var ep = EventProxy()
    ep.after('event1',number,function(list){
      //event1執(zhí)行number次之后痊银,function將被執(zhí)行抵蚊,注意,并不是執(zhí)行一次就調(diào)用一次,是最后完了泌射,然后after函數(shù)才被執(zhí)行
      //something被存儲在list里面
    })
    for (var i = 0;i<number;i++){
      ....
      ep.emit('event1',something)
    }
    
  • 持續(xù)型異步協(xié)作

    當(dāng)某個事件獲取到的數(shù)據(jù)是動態(tài)的粘姜,也就是要持續(xù)刷新的時候

    var ep = new EventProxy();
    ep.tail('event1','event2',function(event1,event2){
      //也是所有的事件觸發(fā)之后,這個function被調(diào)用執(zhí)行
      //參數(shù)對應(yīng)各自的事件名的最新數(shù)據(jù)
    })
    //event1假設(shè)是要持續(xù)觸發(fā)的(也就是數(shù)據(jù)重復(fù)更新的)熔酷,那么將會在每次觸發(fā)之后tail都會執(zhí)行一次孤紧,event1具體的形式可能就是放在一個定時器里面,5秒執(zhí)行一次
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拒秘,一起剝皮案震驚了整個濱河市号显,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躺酒,老刑警劉巖押蚤,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羹应,居然都是意外死亡揽碘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門园匹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雳刺,“玉大人,你說我怎么就攤上這事裸违∫磋耄” “怎么了?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵供汛,是天一觀的道長枪汪。 經(jīng)常有香客問我,道長怔昨,這世上最難降的妖魔是什么雀久? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮朱监,結(jié)果婚禮上岸啡,老公的妹妹穿的比我還像新娘。我一直安慰自己赫编,他們只是感情好巡蘸,可當(dāng)我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著擂送,像睡著了一般悦荒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘹吨,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天搬味,我揣著相機與錄音,去河邊找鬼。 笑死碰纬,一個胖子當(dāng)著我的面吹牛萍聊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悦析,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼寿桨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了强戴?” 一聲冷哼從身側(cè)響起亭螟,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骑歹,沒想到半個月后预烙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡道媚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年扁掸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衰琐。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡也糊,死狀恐怖炼蹦,靈堂內(nèi)的尸體忽然破棺而出羡宙,到底是詐尸還是另有隱情,我是刑警寧澤掐隐,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布狗热,位于F島的核電站,受9級特大地震影響虑省,放射性物質(zhì)發(fā)生泄漏匿刮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一探颈、第九天 我趴在偏房一處隱蔽的房頂上張望熟丸。 院中可真熱鬧,春花似錦伪节、人聲如沸光羞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纱兑。三九已至,卻和暖如春化借,著一層夾襖步出監(jiān)牢的瞬間潜慎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留铐炫,地道東北人垒手。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像倒信,于是被迫代替她去往敵國和親淫奔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,595評論 2 350

推薦閱讀更多精彩內(nèi)容