第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

進(jìn)擊Node.js基礎(chǔ)(一)

Scott 全棧工程師
難度中級(jí)
時(shí)長(zhǎng) 3小時(shí)27分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.50
664人評(píng)價(jià) 查看評(píng)價(jià)
9.8 內(nèi)容實(shí)用
9.4 簡(jiǎn)潔易懂
9.3 邏輯清晰
  • // 發(fā)送request請(qǐng)求


    // 格式: http.request(Options,function(){})

    var http = require('http');

    var querystring = require('querystring');


    // 評(píng)論的內(nèi)容

    var postData = querystring.stringify({

    'content':'使用request測(cè)試評(píng)論',

    'cid':348,

    })


    // 定義options,信息來自于general

    // general

    // Request URL: http://idcbgp.cn/course/docomment

    // Request Method: POST

    // Status Code: 200 OK

    // Remote Address: 115.182.41.180:443

    // Referrer Policy: no-referrer-when-downgrade


    // 注意:

    // 在options中content-length的值中,

    // 需要自己手動(dòng)寫入postData.length,用來做校驗(yàn)

    // 如:'Content-Length':postData.length,

    var Options = {

    hostname:'idcbgp.cn',

    port:443,

    parse:'/course/docomment',

    method:'POST',

    headers:{

    'Accept':' application/json, text/javascript, */*; q=0.01',

    'Accept-Encoding':' gzip, deflate, br',

    'Accept-Language':' zh-CN,zh;q=0.9',

    'Connection':' keep-alive',

    'Content-Length':postData.length,

    'Content-Type':' application/x-www-form-urlencoded; charset=UTF-8',

    'Cookie':' IMCDNS=0; zg_did=%7B%22did%22%3A%20%2216762441a7a815-016a46bcd15174-35617600-13c680-16762441a7b794%22%7D; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1543541890; imooc_uuid=2545b8d9-ed90-44c6-8221-cccfc484afb3; imooc_isnew=1; imooc_isnew_ct=1543541889; loginstate=1; apsid=BiZThjNmY2NTg5NTE3NWZlNTAzNDg0NTg1ZTI5ZGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzM1NDM0MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhhZTNlNmRhZDk0NjcwMDk4NGVmYWI3YWQ5MjVjMzExs5QAXLOUAFw%3DZj; PHPSESSID=co22od5t3ndqljcu0fkv2ktpe6; zg_f375fe2f71e542a4b890d9a620f9fb32=%7B%22sid%22%3A%201543548907984%2C%22updated%22%3A%201543548949222%2C%22info%22%3A%201543541889669%2C%22superProperty%22%3A%20%22%7B%5C%22%E5%BA%94%E7%94%A8%E5%90%8D%E7%A7%B0%5C%22%3A%20%5C%22%E6%85%95%E8%AF%BE%E7%BD%91%E6%95%B0%E6%8D%AE%E7%BB%9F%E8%AE%A1%5C%22%2C%5C%22%E5%B9%B3%E5%8F%B0%5C%22%3A%20%5C%22web%5C%22%7D%22%2C%22platform%22%3A%20%22%7B%7D%22%2C%22utm%22%3A%20%22%7B%7D%22%2C%22referrerDomain%22%3A%20%22idcbgp.cn%22%2C%22cuid%22%3A%20%22lJ-kybg3YwI%2C%22%7D; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1543548949; cvde=5c009481cde1f-13',

    'Host': 'idcbgp.cn',

    'Origin': 'http://idcbgp.cn',

    'Referer': 'http://idcbgp.cn/video/8837',

    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',

    'X-Requested-With': 'XMLHttpRequest'

    }

    }


    // 正式發(fā)送請(qǐng)求

    var req = http.request(Options,function(res){

    console.log('status: ' + res.statusCode);

    console.log(res);

    console.log('headers' + JSON.stringify(res.headers));

    // chunk是請(qǐng)求之后返回的數(shù)據(jù),為buffer類型

    res.on('data',function(chunk){

    console.log(Buffer.isBuffer(chunk));

    console.log(typeof chunk );

    })

    res.on('end',function(){

    console.log('評(píng)論完畢');

    })

    })

    // 請(qǐng)求異常時(shí)觸發(fā)req.on('error' ,function)

    req.on('end',function(e){

    console.log('error' + e.message);

    })


    // 把數(shù)據(jù)寫入到請(qǐng)求體

    req.write(postData)


    // 最后,手動(dòng)調(diào)用req.end()來結(jié)束請(qǐng)求

    req.end()


    查看全部
  • 模塊的分類:核心模塊、文件模塊、第三方模塊

    查看全部
    0 采集 收起 來源:模塊的分類

    2018-11-29

  • 2018.10.5最新可用代碼

    var http = require('http')

    var cheerio = require('cheerio')

    var url = 'http://idcbgp.cn/learn/637'


    function filterChapters(html) {

    var $ = cheerio.load(html)

    var chapters = $('.chapter')


    var courseData = []

    function trim(str) {

    return str.replace(/[\r\n ]/g, "") ?//去除字符算中的空格

    }

    chapters.each(function (index, item) {

    var chapter = $(item)

    var chapterTitle = chapter.find('h3').text().trim()

    var videos = chapter.find('.video').children('li')

    var chapterData = {

    chapterTitle: chapterTitle,

    videos: []

    }


    // console.log(chapterTitle);

    videos.each(function (index, item) {

    var video = $(item).find('.J-media-item')

    var videoTitle = video.text()

    videoTitle = trim(videoTitle)

    var id = video.attr('href').split('video/')[1]

    // console.log(videoTitle);

    chapterData.videos.push({

    videoTitle: videoTitle,

    id: id

    });

    });


    courseData.push(chapterData)

    })


    return courseData

    }


    function printCourseInfo(courseData) {

    courseData.forEach(function (item) {

    var chapterTitle = item.chapterTitle

    console.log(chapterTitle + '\n')


    item.videos.forEach(function (video) {

    console.log('【' + video.id + '】' + video.videoTitle + '\n')

    })

    })

    }



    http.get(url, function (res) {

    var html = ''


    res.on('data', function (data) {

    html += data

    })


    res.on('end', function () {

    // console.log(html)

    var courseData = filterChapters(html)

    printCourseInfo(courseData);

    })

    }).on('error', function () {

    console.log('獲取課程信息出錯(cuò)!')

    })


    查看全部
    0 采集 收起 來源:HTTP 小爬蟲

    2018-11-25

  • 一、測(cè)試http性能,appache自帶的ab.

    1ab?-n1000?-c10?http://localhost:2015/

    (1)-n:總請(qǐng)求數(shù), ?

    -c:并發(fā)數(shù),Concurrency[k?n'k?r?nsi](并發(fā)性)。

    -t:測(cè)試進(jìn)行的總時(shí)間,-p:post數(shù)據(jù)文件,-w:以html表格形式輸出文件。

    (2)2015后要加/

    二、重要指標(biāo)

    1、Requests per second:服務(wù)器吞吐率。

    2、Time per request:用戶平均請(qǐng)求的等待時(shí)間。

    3、第2個(gè)Time per request:每個(gè)連接請(qǐng)求時(shí)間實(shí)際運(yùn)行時(shí)間的平均值。


    查看全部
  • GitHub瀏覽器快捷鍵T,進(jìn)行搜索文件

    快捷鍵Ctrl+F,搜索代碼


    查看全部
    0 采集 收起 來源:HTTP 源碼解讀

    2018-11-25

  • 作用域:與調(diào)用函數(shù),訪問變量的能力有關(guān) 作用域分為:局部和全局(在局部作用域里可以訪問到全局作用域的變量,但在局部作用域外面就訪問不到局部作用里面所設(shè)定的變量)?

    ?上下文:與this關(guān)鍵字有關(guān) 是調(diào)用當(dāng)前可執(zhí)行代碼的引用 ? ? ? this總是指向調(diào)用這個(gè)的方法的對(duì)象 js里的this 通常是當(dāng)前函數(shù)的擁有者,擁有者叫做執(zhí)行上下文。在nodejs中聲明函數(shù)中的this指向全局global,js中指向window。實(shí)例化函數(shù)后,指向當(dāng)前函數(shù)的擁有者。

    call和apply可以改變上下文執(zhí)行對(duì)象。(把原來的this全都替換成自己指定的對(duì)象即可理解。)


    查看全部
  • 1. 什么是回調(diào)? 回調(diào)是異步編程時(shí)的基礎(chǔ),將后續(xù)邏輯封裝成起始函數(shù)的參數(shù),逐層嵌套 2. 什么是同步/異步? 同步是指:發(fā)送方發(fā)出數(shù)據(jù)后,等接收方發(fā)回響應(yīng)以后才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式。 ? 異步是指:發(fā)送方發(fā)出數(shù)據(jù)后,不等接收方發(fā)回響應(yīng),接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式。 ? 3. 什么是I/O? 磁盤的寫入(in)磁盤的讀?。╫ut) 4. 什么的單線程/多線程? 一次只能執(zhí)行一個(gè)程序叫做單線程 一次能執(zhí)行多個(gè)程序叫多線程 5. 什么是阻塞/非阻塞? 阻塞:前一個(gè)程序未執(zhí)行完就得一直等待 非阻塞:前一個(gè)程序未執(zhí)行完時(shí)可以掛起,繼續(xù)執(zhí)行其他程序,等到使用時(shí)再執(zhí)行 6. 什么是事件? 一個(gè)觸發(fā)動(dòng)作(例如點(diǎn)擊按鈕) 7. 什么是事件驅(qū)動(dòng)? 一個(gè)觸發(fā)動(dòng)作引起的操作(例如點(diǎn)擊按鈕后彈出一個(gè)對(duì)話框) 8. 什么是基于事件驅(qū)動(dòng)的回調(diào)? 為了某個(gè)事件注冊(cè)了回調(diào)函數(shù),但是這個(gè)回調(diào)函數(shù)不是馬上執(zhí)行,只有當(dāng)事件發(fā)生的時(shí)候,才會(huì)調(diào)用回調(diào)函數(shù),這種函數(shù)執(zhí)行的方式叫做事件驅(qū)動(dòng)~這種注冊(cè)回調(diào)就是基于事件驅(qū)動(dòng)的回調(diào),如果這些回調(diào)和異步I/O(數(shù)據(jù)寫入、讀取)操作有關(guān),可以看作是基于回調(diào)的異步I/O,只不過這種回調(diào)在nodejs中是有事件來驅(qū)動(dòng)的 9. 什么是事件循環(huán)? //事件循環(huán)Eventloop,倘若有大量的異步操作,一些I/O的耗時(shí)操作,甚至是一些定時(shí)器控制的延時(shí)操作,它們完成的時(shí)候都要調(diào)用相應(yīng)的回調(diào)函數(shù),從而來完成一些密集的任務(wù),而又不會(huì)阻塞整個(gè)程序執(zhí)行的流程,此時(shí)需要一種機(jī)制來管理,這種機(jī)制叫做事件循環(huán). 總而言之就是:管理大量異步操作的機(jī)制叫做事件循環(huán) Event Loop: 回調(diào)函數(shù)隊(duì)列。異步執(zhí)行的函數(shù)會(huì)被壓入這個(gè)隊(duì)列; 隊(duì)列被循環(huán)查詢

    查看全部
  • 請(qǐng)求方法:

    get:獲取數(shù)據(jù)

    post:提交數(shù)據(jù)

    put:更新發(fā)布數(shù)據(jù)

    delete:刪除

    head類同get


    狀態(tài)碼:

    1XX:已提交請(qǐng)求,進(jìn)行處理

    2XX:已提交請(qǐng)求已處理

    3XX:重定向,進(jìn)一步處理

    4XX:客戶端錯(cuò)誤,請(qǐng)求有語法錯(cuò)誤

    5XX:服務(wù)器端錯(cuò)誤

    200 ok,請(qǐng)求成功
    400 語法錯(cuò)誤
    401 未授權(quán)
    403 服務(wù)器拒絕
    404 資源不存在
    500服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
    503 當(dāng)前不能處理該請(qǐng)求


    查看全部
  • querystring.escape(string)?對(duì)字符進(jìn)行Url轉(zhuǎn)義,querystring.unescape(string)對(duì)字符串反轉(zhuǎn)義


    • node自帶

    • querystring.stringify(a,b,c)
      將json類型的參數(shù)轉(zhuǎn)換成字符串
    a:json參數(shù)
    b:鍵值對(duì)分隔符
    c:鍵值分隔符
    ?querystring.stringify(
    {name:'echo',
    course:['jade','node'],form:''},
    ',',':');
    運(yùn)行結(jié)果:
    'name:echo,course:jade,
    course:node,form:'
    • querystring.parse(a,b,c)將字符
      串參數(shù)轉(zhuǎn)換成json類型
      注:參數(shù)和上處方法類似


    查看全部
  • url.parse():將url字符串轉(zhuǎn)換為url對(duì)象?

    url.format():將url對(duì)象格式化為url 字符串?

    url.resolve():用于解析,接受兩個(gè)參數(shù),拼接


    • //解析url地址為對(duì)象

    • url.parse('一個(gè)有參數(shù)的URL',true)? ? ?//query有解析

    • url.parse('一個(gè)有參數(shù)的URL')? ? ?//query沒有解析

    ????url.parse("http://imooc.com",true,true);將第三個(gè)參數(shù)設(shè)置為true后在不知道協(xié)議的情況下仍可正確解析域名與路徑


    查看全部
  • 模塊的流程:

    1、創(chuàng)建模塊。teacher.js

    2、導(dǎo)出模塊。exports.add = function() {}; export是一個(gè)對(duì)象,可以掛載屬性,number,data, string等。

    3、加載模塊。var teacher = require('./teacher.js);

    4、使用模塊。teacher.add("Scot");


    查看全部
  • 如果你想要你的模塊成為一個(gè)特別的對(duì)象類型,那么請(qǐng)使用module.exports;
    如果你希望你的模塊成為一個(gè)傳統(tǒng)的模塊實(shí)例,那么請(qǐng)使用exports。


    expoets和module.exports在調(diào)用的時(shí)候稍微有點(diǎn)區(qū)別,但是他們實(shí)現(xiàn)的功能是一樣的。如果你想要你的模塊成為一個(gè)特別的對(duì)象類型,那么使用module.exports;如果你期望你的模塊成為一個(gè)傳統(tǒng)的模塊實(shí)例,那就使用exports。


    查看全部
  • @模塊分類:

    >核心模塊:http fs path..

    >文件/本地模塊:var util=require('./util.js')

    >npm第三方模塊:var promise=require('bluebird')

    模塊的引用>>路徑引用 模塊名引用(最終也會(huì)被映射為路徑)

    包含核心函數(shù)的核心模塊會(huì)在node啟動(dòng)時(shí)被預(yù)先加載,非核心及第三方模塊在之后加載


    NodeJs文件和模塊一對(duì)一對(duì)應(yīng)關(guān)系

    引入文件的2種方式:文件路徑引入,文件名引入。

    查看全部
    0 采集 收起 來源:模塊的分類

    2018-11-25

  • node.js的版本

    查看全部
  • nodejs.org 官方網(wǎng)站

    npmjs.com nodejs工具網(wǎng)站

    github.com 工程及源碼

    stackoverflow.com 疑問解答


    查看全部

舉報(bào)

0/150
提交
取消
課程須知
我們的教程面向的同學(xué)是:有 JavaScript 基礎(chǔ)的同學(xué),如果有過任何后臺(tái)語言開發(fā)的經(jīng)驗(yàn)更適合,對(duì)于有基礎(chǔ)的同學(xué),可以快進(jìn)跳著看教程,不必拘束于每一分鐘都聽,很多時(shí)候其實(shí)是思路,思路打通了,很多技術(shù)細(xì)節(jié)也就不用糾結(jié)了。
老師告訴你能學(xué)到什么?
從 Node.js 基礎(chǔ)知識(shí)入手,比如安裝,環(huán)境配置、開發(fā)環(huán)境等,進(jìn)一步熟悉 Node.js API ,一些 HTTP 知識(shí),并且對(duì)模塊的概念和使用更加熟悉,從而進(jìn)階到模塊或者插件的開發(fā),最終能夠借助 Node.js 快速實(shí)現(xiàn)特定的需求。

微信掃碼,參與3人拼團(tuán)

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對(duì)慕課網(wǎng)的支持!