-
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() //去掉多余空格
查看全部 -
记录一下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
查看全部 -
转化流的_flush事件查看全部
-
读写操作查看全部
-
各种事件查看全部
-
Buffer静态方法 poolSize isBuffer compare isEncoding concat byteLength查看全部
举报