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

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

進擊Node.js基礎(二)

Scott 全棧工程師
難度中級
時長 2小時 4分
學習人數
綜合評分9.60
153人評價 查看評價
9.8 內容實用
9.4 簡潔易懂
9.6 邏輯清晰
  • var options = {

    ????key: fs.readFileSync('ssh_key.pem'),

    ????cert: fs.readFileSync('ssh_cert.pem')

    }


    https

    ????.createServeer(options, (req, res) => {

    ????????res.writeHead(200);

    ????????res.end('Hello');

    ????})

    ????.listen(8080)

    查看全部
  • http和https的區別。

    https在http的基礎上,增加了SSL/TLS(數據加密傳輸)

    查看全部
  • $(dom).trim() //去掉多余空格

    查看全部
  • https://img1.sycdn.imooc.com//5b02785b0001f9e606880425.jpg記錄一下promise庫,其實平時都是手寫用的比較多

    查看全部
  • buffer實例方法

    查看全部
  • var stream=require('stream');

    var util=require('util');

    var ReadStream=function(){

    stream.Readable.call(this);

    }

    util.inherits(ReadStream,stream.Readable);

    ReadStream.prototype._read=function(){

    this.push('i');

    this.push('love');

    this.push('you');

    this.push(null);//必須要的,不然會一直重復輸入

    }

    var WriteStream=function(){

    stream.Writable.call(this);

    this._cached=new Buffer('');

    }

    util.inherits(WriteStream,stream.Writable);

    WriteStream.prototype._write=function(chunk,encode,cb){

    console.log(chunk.toString());

    cb();

    }

    var TransformStream=function(){

    stream.Transform.call(this);

    }

    util.inherits(TransformStream,stream.Transform);

    TransformStream.prototype._transform=function(chunk,encode,cb){

    this.push(chunk);

    cb();

    }

    TransformStream.prototype._flush=function(cb){

    this.push('really');

    cb();

    }

    new ReadStream().pipe(new TransformStream).pipe(new WriteStream);



    查看全部
  • var fs=require('fs');

    fs.readFile('logo.png',function(err,originBuffer){

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

    fs.writeFile('logo_buffer.png',originBuffer,function(err){

    if(err) console.log(err);

    });

    var base64Image=originBuffer.toString('base64');

    console.log(base64Image);

    var buf=new Buffer(base64Image,'base64');

    console.log(Buffer.compare(buf,originBuffer));

    });



    查看全部
  • 使用cheerio的find來找到節點時,如果class有兩個類名組成,只能使用第一個,使用第二個找不到數據的,如果使用了數組的話記得加上$(),如$(find('.meta-value')[1]).text();因為加上$()才能作為一個節點對象使用。

    查看全部
  • var http=require('http');

    var cheerio=require('cheerio');

    var Promise=require('bluebird');

    var bashUrl='http://www.xianlaiwan.cn/learn/'

    var courseIds=[348,637];


    //過濾數據

    function filterChapters(html){

    var $=cheerio.load(html);

    var chapters=$('.chapter');

    var courseData=[];

    var courseTitle=$('.hd').find('h2').text().replace(/\s/g,'');

    var courseNumber=$($('.static-item')[2]).find('.meta-value').text().replace(/\s/g,'');

    chapters.each(function(index,value){

    var chapter=$(this);

    var chapterTitle=chapter.find('h3').text().replace(/\s/g,'');

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

    var chapterData={

    chapterTitle:chapterTitle,

    videos:[]

    }

    videos.each(function(index,value){

    var video=$(this);

    var videoTitle=video.text().replace(/\s/g,'').split('開始學習')[0];

    var id=video.find('a').attr('href').split('/')[2].replace(/\s/g,'');

    var videoData={

    title:videoTitle,

    id:id

    }

    chapterData.videos.push(videoData);

    });

    courseData.push(chapterData);

    });

    var courseObjectData={

    courseTitle:courseTitle,

    courseNumber:courseNumber,

    courseData:courseData

    }

    return courseObjectData;

    }

    //將得到的數據展示出來

    function showCourseData(coursesObjectData){

    coursesObjectData.forEach(function(courseObjectData){

    console.log('課程名稱:'+courseObjectData.courseTitle+'\n');

    console.log('學習人數:'+courseObjectData.courseNumber+'\n\n');

    courseObjectData.courseData.forEach(function(item){

    var chapterTitle=item.chapterTitle;

    console.log(chapterTitle+'\n');

    item.videos.forEach(function(item){

    console.log('【'+item.title+'】'+'\n');

    console.log('視頻號:'+item.id+'\n');

    });

    });

    });

    }

    /*

    使用http模塊來得到html文檔

    */

    function promiseGet(url){

    return new Promise(function(resolve,reject){

    http.get(url,function(res){

    var html='';

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

    html+=data;

    });

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

    resolve(html);

    });

    res.on('error',function(e){

    reject(e);

    });

    });

    });

    }


    var promiseCourseObjectData=[];

    courseIds.forEach(function(id){

    promiseCourseObjectData.push(promiseGet(bashUrl+id));

    });

    Promise.all(promiseCourseObjectData).then(function(pages){

    var coursesObjectData=[];

    pages.forEach(function(html){

    var courseObjectData=filterChapters(html);

    coursesObjectData.push(courseObjectData);

    });

    showCourseData(coursesObjectData);

    });


    查看全部
  • (一)Promise 1. ES6的Promise語言標準 2. Promise/A+規范 (二)Promise使用場景 1. 是一種異步的實踐方案 2. 特別是Callback Hell, 可以用同步的方式寫異步代碼 (三) Promise的三種狀態 1. pending ?未完成 2. fulfilled 已完成 3. rejected 失敗 (1->2, 1->3 正確) (2->1, 3->1, 2->3 錯誤) 總結: 只能又未完成變為已完成或失敗, 且不可逆, 改變只能一次, 不存在即已完成同事失敗

    查看全部
  • 111

    查看全部
    0 采集 收起 來源:Node.js課程前言

    2018-04-11

  • 轉化流的_flush事件
    查看全部
  • 讀寫操作
    查看全部
  • 各種事件
    查看全部
  • Buffer靜態方法 poolSize isBuffer compare isEncoding concat byteLength
    查看全部

舉報

0/150
提交
取消
課程須知
本課程是一個系列課程,前導課程是《進擊 Node.js 基礎(一)》,所以建議小伙伴們學習本課程之前先把它拿下。
老師告訴你能學到什么?
1、了解 Promise 2、橫掃 Nodejs API:Buffer、API-Stream

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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