亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

進擊Node.js基礎(一)

Scott 全棧工程師
難度中級
時長 3小時27分
學習人數
綜合評分9.50
664人評價 查看評價
9.8 內容實用
9.4 簡潔易懂
9.3 邏輯清晰
  • // 發送request請求


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

    var http = require('http');

    var querystring = require('querystring');


    // 評論的內容

    var postData = querystring.stringify({

    'content':'使用request測試評論',

    'cid':348,

    })


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

    // general

    // Request URL: http://www.xianlaiwan.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的值中,

    // 需要自己手動寫入postData.length,用來做校驗

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

    var Options = {

    hostname:'www.xianlaiwan.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%22www.xianlaiwan.cn%22%2C%22cuid%22%3A%20%22lJ-kybg3YwI%2C%22%7D; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1543548949; cvde=5c009481cde1f-13',

    'Host': 'www.xianlaiwan.cn',

    'Origin': 'http://www.xianlaiwan.cn',

    'Referer': 'http://www.xianlaiwan.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'

    }

    }


    // 正式發送請求

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

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

    console.log(res);

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

    // chunk是請求之后返回的數據,為buffer類型

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

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

    console.log(typeof chunk );

    })

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

    console.log('評論完畢');

    })

    })

    // 請求異常時觸發req.on('error' ,function)

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

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

    })


    // 把數據寫入到請求體

    req.write(postData)


    // 最后,手動調用req.end()來結束請求

    req.end()


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

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

    2018-11-29

  • 2018.10.5最新可用代碼

    var http = require('http')

    var cheerio = require('cheerio')

    var url = 'http://www.xianlaiwan.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('獲取課程信息出錯!')

    })


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

    2018-11-25

  • 一、測試http性能,appache自帶的ab.

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

    (1)-n:總請求數, ?

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

    -t:測試進行的總時間,-p:post數據文件,-w:以html表格形式輸出文件。

    (2)2015后要加/

    二、重要指標

    1、Requests per second:服務器吞吐率。

    2、Time per request:用戶平均請求的等待時間。

    3、第2個Time per request:每個連接請求時間實際運行時間的平均值。


    查看全部
    0 采集 收起 來源:HTTP 性能測試

    2018-11-25

  • GitHub瀏覽器快捷鍵T,進行搜索文件

    快捷鍵Ctrl+F,搜索代碼


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

    2018-11-25

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

    ?上下文:與this關鍵字有關 是調用當前可執行代碼的引用 ? ? ? this總是指向調用這個的方法的對象 js里的this 通常是當前函數的擁有者,擁有者叫做執行上下文。在nodejs中聲明函數中的this指向全局global,js中指向window。實例化函數后,指向當前函數的擁有者。

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


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

    查看全部
  • 請求方法:

    get:獲取數據

    post:提交數據

    put:更新發布數據

    delete:刪除

    head類同get


    狀態碼:

    1XX:已提交請求,進行處理

    2XX:已提交請求已處理

    3XX:重定向,進一步處理

    4XX:客戶端錯誤,請求有語法錯誤

    5XX:服務器端錯誤

    200 ok,請求成功
    400 語法錯誤
    401 未授權
    403 服務器拒絕
    404 資源不存在
    500服務器發生不可預期的錯誤
    503 當前不能處理該請求


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


    • node自帶

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


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

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

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


    • //解析url地址為對象

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

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

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


    查看全部
  • 模塊的流程:

    1、創建模塊。teacher.js

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

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

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


    查看全部
  • 如果你想要你的模塊成為一個特別的對象類型,那么請使用module.exports;
    如果你希望你的模塊成為一個傳統的模塊實例,那么請使用exports。


    expoets和module.exports在調用的時候稍微有點區別,但是他們實現的功能是一樣的。如果你想要你的模塊成為一個特別的對象類型,那么使用module.exports;如果你期望你的模塊成為一個傳統的模塊實例,那就使用exports。


    查看全部
  • @模塊分類:

    >核心模塊:http fs path..

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

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

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

    包含核心函數的核心模塊會在node啟動時被預先加載,非核心及第三方模塊在之后加載


    NodeJs文件和模塊一對一對應關系

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

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

    2018-11-25

  • node.js的版本

    查看全部
    0 采集 收起 來源:Nodejs版本常識

    2018-11-25

  • nodejs.org 官方網站

    npmjs.com nodejs工具網站

    github.com 工程及源碼

    stackoverflow.com 疑問解答


    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!