node.js核心模块学习总结

版权声明:原创文章,未经博主同意,不得擅自转载! https://blog.csdn.net/qq_36718999/article/details/81203791

简介:

1.Node.js是运行在服务端的JavaScrip;

2.Node.js是一个基于Chrome JavaScript运行时建立的一个平台;

3.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好;

4.以下是Node.js中常用的核心模块。

一、events

1.1 使用事件:EventEmitter

/* index.js */
//导入events模块
const EventEmitter = require('events');
//定义类  继承 使用其所有的属性方法
class Player extends EventEmitter {}
// 实例化一个 player
var player = new Player();
//on监听 事件play
player.on('play', () =>{
  console.log('正在播放。。。');
})
//触发事件 play
player.emit('play');

1.2 事件的参数

/*index.js*/

//导入events模块
const EventEmitter = require('events');
//定义类  继承 使用其所有的属性方法
class Player extends EventEmitter {}
// 实例化一个 player
var player = new Player();
//on监听 事件play
player.on('play', (track) =>{
  console.log('正在播放。。。'+track);
  console.log(`正在播放:《${track}》`);
})
//触发事件 play
player.emit('play','再见理想');

1.3 只执行一次的事件监听

/*index.js*/

//导入events模块
const EventEmitter = require('events');
//定义类  继承 使用其所有的属性方法
class Player extends EventEmitter {}
// 实例化一个 player
var player = new Player();
//once 监听 事件play 只执行一次
player.once('play', (track) =>{
  console.log(`正在播放:《${track}》`);
})
//触发事件 play
player.emit('play','再见理想1');
player.emit('play','再见理想2');

二、File System

2.1 得到文件与目录的信息:stat

/*index.js*/

//导入fs模块
const fs = require('fs');
//查看index.js文件的信息
fs.stat('index.js',(error,stats) =>{
  if (error){
    console.log(error);
  }else{
    console.log(stats);
    //是否是文件还是目录
    console.log(`文件:${stats.isFile()}`);
    console.log(`目录:${stats.isDirectory()}`);
  }
})

2.2 创建新目录:mkdir

/*index.js*/

//导入fs模块
const fs = require('fs');
//在根目录下创建新目录logs
fs.mkdir('logs',(error) =>{
  if(error) {
    console.log(error);
  }else{
    console.log('成功创建目录:logs')
  }
})

2.3 创建文件并写入内容:writeFile、appendFile

/*index.js*/

//导入fs模块
const fs = require('fs');
//writeFile:向文件中写入内容并覆盖文件原有的内容,如果文件不存在就会新建;
fs.writeFile('logs/hello.log','您好~\n',(error) =>{
  if (error) {
    console.log(error);
  }else{
    console.log('成功写入文件1');
  }
})
//appendFile:向文件中添加内容,不会覆盖文件原有内容
fs.appendFile('logs/hello.log','hello~',(error)=>{
  if(error){
    console.log(error);
  }else {
    console.log('成功写入文件2');
  }
})

2.4 读取文件里的内容:writeFile

/*index.js*/

//导入fs模块
const fs = require('fs');
//writeFile:向文件中写入内容并覆盖文件原有的内容,如果文件不存在就会新建;
fs.readFile('logs/hello.log','utf8',(error,data) =>{
  if(error){
    console.log(error);
  }else{
    //data 默认为二进制数据,可以转换字符串,或者添加数据类型utf8
    console.log(data);
    // console.log(data.toString());
  }
})

2.5 列出目录包含的内容:readdir

/*index.js*/

//导入fs模块
const fs = require('fs');
//readdir:获取logs文件夹中的内容;
fs.readdir('logs',(error,files) =>{
  if (error) {
    console.log(error);
  } else {
    console.log(files);//返回数组
  }
})

2.6 重命名文件夹或文件名:rename

/*index.js*/

//导入fs模块
const fs = require('fs');
//rename:重命名文件名或者文件夹名
fs.rename('logs/hello.log','logs/greeting.log',(error) =>{
  if (error) {
    console.log(error)
  } else {
    console.log('重命名成功!');
  }
})

2.7 删除目录与文件:rmdir、unlink

/*index.js*/

//导入fs模块
const fs = require('fs');
//同步读取文件夹内容,并删除其中的文件
fs.readdirSync('logs').map((file)=>{
  fs.unlink(`logs/${file}`,(error) =>{
    if (error) {
       console.log(error)
    } else {
      console.log(`成功删除了文件:${file}`);
    }
  });
});
//rmdir:删除目录,如果是非空目录,则报错
fs.rmdir('logs',(error)=>{
  if (error) {
    console.log(error);
  } else {
    console.log('成功删除了目录:logs');
  }
})

三、Stream

3.1 读取文件流

/*index.js*/
//根目录下  新建data.json文件 随意输入内容
//导入fs模块
var fs = require('fs');

var fileReadStream = fs.createReadStream('data.json');

var count = 0;

fileReadStream.once('data',(chunk) =>{
  console.log(chunk.toString());
});

fileReadStream.on('data',(chunk) =>{
  console.log(`${count} 接受到:${chunk.length}`);
})

3.2 可读流的事件

/*index.js*/

//导入fs模块
var fs = require('fs');
// 以流的形式  读取文件内容 一块一块的读取
var fileReadStream = fs.createReadStream('data.json');

var count = 0;
//data 事件:有数据可读触发 返回读取的一块内容
fileReadStream.on('data',(chunk) =>{
  console.log(`${count} 接受到:${chunk.length}`);
})
//end 事件:读取结束时触发
fileReadStream.on('end',()=>{
  console.log('--结束--');
})
//error事件:读取出错时触发
fileReadStream.on('error',(error) =>{
  console.log(error);
})

3.3 可写的文件流

/*index.js*/

//导入fs模块
var fs = require('fs');
// 创建可读、可写入的流
var fileReadStream = fs.createReadStream('data.json');
var fileWriteStream = fs.createWriteStream('data-1.json')

var count = 0;
//data 事件:有数据可读触发 返回读取的一块内容
fileReadStream.on('data',(chunk) =>{
  console.log(`${count} 接受到:${chunk.length}`);
  //将读取的文件内容 写入新的文件中
  fileWriteStream.write(chunk);
})
//end 事件:读取结束时触发
fileReadStream.on('end',()=>{
  console.log('--结束--');
})
//error事件:读取出错时触发
fileReadStream.on('error',(error) =>{
  console.log(error);
})

3.4 链接使用 pipe

/*index.js*/

//导入fs模块 文件压缩模块zlib
var fs = require('fs');
var zlib = require('zlib');
// 创建可读、可写入的流
var fileReadStream = fs.createReadStream('data.json');
var fileWriteStream = fs.createWriteStream('data.json.gz');

//写入的流可以 监听pipe 输出源文件
fileWriteStream.on('pipe',(source)=>{
  console.log(source);
})

//通过管道pipe处理可读文件,再写入
fileReadStream
.pipe(zlib.createGzip())
.pipe(fileWriteStream);

四、HTTP

4.1 request

/*index.js*/

//导入http模块
var http = require('http');
//创建请求的协议、主机名、端口、方法、路径
var options ={
  protocol:'http:',
  hostname:'api.douban.com',
  port:'80',
  method:'GET',
  path:'/v2/movie/top250'
};
//使用http的request方法 发出请求
var request = http.request(options,(response) =>{
  console.log(response);
  console.log(response.statusCode);
  console.log(response.headers);
});
//请求时监听 error
request.on('error',(error) =>{
  console.log(error);
});
//请求结束
request.end();

4.2 利用请求回来的数据

/*index.js*/

//导入http模块
var http = require('http');
//创建请求的协议、主机名、端口、方法、路径
var options ={
  protocol:'http:',
  hostname:'api.douban.com',
  port:'80',
  method:'GET',
  path:'/v2/movie/top250'
};
//定义变量  存储数据
var responseData = '';

//使用http的request方法 发出请求
var request = http.request(options,(response) =>{
  //数据默认为二进制 ,设置为utf8
response.setEncoding('utf8');
response.on('data',(chunk) =>{
  responseData += chunk;
});
 response.on('end',()=>{
   JSON.parse(responseData).subjects.map((item) =>{
     console.log(item.title);
   });
 });
});
//请求时监听 error
request.on('error',(error) =>{
  console.log(error);
});
//请求结束
request.end();

4.3 创建服务器

/*index.js*/

//导入http模块
var http = require('http');
//创建server 服务
var server = http.createServer();

server.on('request',(request,response) =>{
  response.writeHead(200,{
    'Content-Type':'text/html'
  });
  response.end(`<h1>hello server</h1>`);

});
//监听端口  
server.listen(8080);

//cmd中启动服务器 node index.js
//浏览器打开 localhost:8080  

猜你喜欢

转载自blog.csdn.net/qq_36718999/article/details/81203791