为了账号安全,请及时绑定邮箱和手机立即绑定

进击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.imooc.com/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下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!