常用的内置模块
http
跨域
创建服务器
爬虫 cheerio 解析标记并提供遍历 each
1.获取网页源代码
2,对源代码进行分析 获取数据
URL 统一资源定位符
https: // user :pass @ sub.host.com : 8080 /p/a/t/h ? query=string #hash
hostname port pathname search
protocol(协议) auth(验证) host(主机) query hsah
path
url.parse 格式转换为对象
const url=require('url');
let urlstring='http://www.baidu.com:8080/home/login/test?name=wy&ps=wanger#hash'
const myURL=url.parse(urlstring,false) //false query是字符串格式 true query 是对象格式
console.log(myURL)
url.format 对象格式转换为url格式
const url=require('url');
let obj={
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.baidu.com:8080',
port: '8080',
hostname: 'www.baidu.com',
hash: '#hash',
search: '?name=wy&ps=wanger',
query: { name: 'wy', ps: 'wanger' },
pathname: '/home/login/test',
path: '/home/login/test?name=wy&ps=wanger',
href: 'http://www.baidu.com:8080/home/login/test?name=wy&ps=wanger#hash'
}
let result=url.format(obj)
console.log(result)
querystring
querystring.escape 编码
const qs=require('querystring'); //主要用于·汉字特殊字符
let code='x=阿瑟&sda=222'
console.log(qs.escape(code));
querystring.unescape 解码
const qs=require('querystring');
let code='x%3D%E9%98%BF%E7%91%9F%26sda%3D222'
console.log(qs.unescape(code))
querystring.parse 将字符串转换为对象
const qs=require('querystring');
let query='us=wangyi&ps=123' //参数二区分键值对 参数三区分键值
console.log(qs.parse(query)); <=====>console.log(qs.parse(query,"&","="));
querystring.stringify将对象转换为字符串
const qs=require('querystring');
let obj={
user:'admin',
pass:123456
}
console.log(qs.stringify(obj,'@',"!"))
path
console.log(_dirname) //获取当前文件所在目录的绝对路径
path.join 作用 :实现路径的拼接 将参数进行智能拼接主要来获取绝对路径
console.log(path.join(_dirname,'./files.js')) <======>console.log(path.join(_dirname,'./','files.js'))
path.basename 获取路径中的文件名
console.log(path.basename('/foo/bar/baz/asdf/quux.html')); quux.html
path.dirname 获取路径中目录名
console.log(path.dirname(’/foo/bar/baz/asdf/quux.html’)); /foo/bar/baz/asdf/
path.extname 获取路径中文件拓展名
console.log(path.extname('/foo/bar/baz/asdf/quux.html')); .html
path.isAbsolute() 判断路径 绝对路径为true 相对路径为false
events
const EventEmitter=require('events');
//继承加实例化对象
class MyEmitter extends EventEmitter{}
const myEmitter=new MyEmitter();
let callback=(food,food2)=>{
console.log('eat'+food+food2);
}
//添加对象监听
//once执行一次
myEmitter.once('eat',callback)
// myEmitter.on('eat',callback)
//触发对象的事件
myEmitter.emit('eat','哈哈','嘻嘻');
myEmitter.emit('eat','ads','dew');
removeAllListeners移除所有
myEmitter.removeAllListeners();
removeListener 移除单个 移除的的监听函数 必须是绑定的函数
myEmitter.removeListener('eat',callback);
Stream 数据的传输方法
copy一个文件
方法一:
const fs=require('fs');
let read=fs.createReadStream('./event.js'); //创建一个可读流
let data='';
read.on('data',(chunk)=>{
data+=chunk;
console.log(chunk);
})
read.on('end',()=>{
fs.writeFileSync('./event2.js',data);
})
方法二:
//读写流配合
const fs=require('fs');
let read=fs.createReadStream('./event.js');//创建可读的流
let writestream=fs.createWriteStream('./event2.js');//创建可写的流
read.on('data',(chunk)=>{
writestream.write(chunk);
})
方法三:
//运用管道
const fs=require('fs');
let read=fs.createReadStream('./event.js');
let writestream=fs.createWriteStream('./event3.js');
read.pipe(writestream)
方法四:
运用readFile writeFile
zlib
对文件进行压缩
const zlib=require('zlib');
const gzip=zlib.createGzip();
const fs=require('fs');
const inp=fs.createReadStream('./1.png');//所要压缩的文件
const out=fs.WriteStream('./1.png.rar');//压缩的类型