nodejs常用模块
querystring模块
- 功能:Node.js中的字符
- 核心方法
- parse 将String – > Object
用法:parse( str , arg1 , arg2)
str: 你要处理的字符
arg1: 分隔字符
arg2:将 ‘=’ 转化为 ‘:’ (前提是 & 符号是提前被转化的)
var qs = require('querystring') var str = 'http://www.baidu.com:8080/001?a=1&b=2#hash=20' var obj = qs.parse( str,'?','&' ) console.log( obj ); //{ // 'http://www.baidu.com:8080/001?a': '1', // b: '2#hash=20' //}
- stringify 将Object -> String
var str = 'http://www.baidu.com:8080/001?a=1&b=2#hash=20' console.log(qs.stringify(obj)) // http%3A%2F%2Fwww.baidu.com%3A8080%2F001=&a%3D1=b%3D2%23hash%3D20 // %3A ---> : %2F ---> / %3D ---> = %23 ---> # ? ---> =&
- escape 将中文字符编码
var url = require('url') var charaStr = 'http://www.baidu.com/001?city=北京' var urlObj = url.parse(charaStr) //将字符串转为对象 var query = urlObj.query // 选择 city = 北京 console.log( qs.escape( query) ) //city%3D%E5%8C%97%E4%BA%AC
- unescape 将中文字符解码
console.log( qs.unescape( qs.escape( query) )) //city = 北京
- parse 将String – > Object
http模块
- 核心方法
- request
举例: 用request来数据请求var request = require( 'request' ) var http = require ( 'http' ) http.createServer( function ( req,res ) { //创建一个静态服务器 request ( 'https://m.lagou.com/listmore.json', function ( error, response, body ) {//请求数据 if( error ) throw error res.write( body ) //将数据传给前端 res.end( ) //数据传输完成 }) }).listen( 8000 )
- http爬虫
- 爬虫:使用数据请求一段内容,然后将这段内容做数据清洗,最后在通过后端服务器发送到前台页面
- 使用步骤
- 数据请求,获得数据
- 数据清洗 ( 工具 cheerio )
- 安装 cheerio
$ cnpm i cheerio -S
- 使用cheerio
var cheerio = require( 'cheerio' )
- 发送给前台
- request
events模块
事件比较简单,用以下例子实现
var Events = require('events')
class MyEvents extends Events {}
var myEvents = new MyEvents ()
myEvents.on('aa',function(){ // 声明事件
console.log( 'hello Node.js' )
})
myEvents.emit('aa') // 事件的触发
file system模块
- fs模块是Node.js中文件系统
- 功能:操作文件或是目录 ( 即对文件和目录的增删改查 )
- 文件
- 增 writeFile
var fs = require('fs') fs.writeFile('./dist/1.txt', 'hello world', function(error) { if (error) throw error })
- 改 appendFile
fs.appendFile('./dist/1.txt', 'hello fs', 'utf8', function(error) { if (error) throw error console.log('文件修改成功') })
- 查 readFile
fs.readFile('./dist/1.txt', 'utf8', function(error, data) { if (error) throw error console.log(data) console.log('文件读成功') })
- 删 unlink
fs.unlink('./dist/1.txt', function(error) { if (error) throw error console.log('文件删除成功') })
- 目录
- 增 mkdir
fs.mkdir('./dist',function( error ) { if( error ) throw error console.log( '目录创建成功' ) })
- 改 rename
fs.rename('./dist','./fs_dist',function( error ) { if( error ) throw error console.log(' 目录名称修改成功 ') })
- 查 readdir
//先在创建的目录添加文件 for( var i = 0 ; i < 10 ; i ++ ){ //创建10个文件 fs.writeFile(`./fs_dist/${i}.txt`,i,function( err ) { console.log( `第${i}个文件创建成功` ) }) } fs.readdir('./fs_dist','utf-8',function ( error,data ) { //读文件 if( error ) throw error console.log( data ) // 这里输出以文件名为元素构成的数组 for ( var i = 0 ; i < data.length; i ++ ){ //遍历目录下文件 fs.readFile( `./fs_dist/${data[i]}`,'utf8',function( error , content ) { //读取目录下文件里面的内容 if( error ) throw error console.log( content ) }) } })
- 删 rmdir (这个方法只能删除空目录)
fs.rmdir(path,callback) //如需删除全部,先用文件方法先删除里面文件,然后用此方法删除目录 fs.rmdir( './fs_dist', function ( error ) { if( error ) throw error console.log('目录删除成功') })
stream模块
- stream 流: 减少内存消耗,增加效率
例:压缩包的创建var fs = require( 'fs' ) var zlib = require('zlib') // 创建压缩包 var readeStream = fs.createReadStream( './dist/1.txt' ) //读文件 var writeStream = fs.createWriteStream( './dist/1.txt.gz' ) //写文件 var gzip = zlib.createGzip() // 空压缩包 //过程:读取文件---->新建一个压缩包---->将读取的文件放进压缩包---->输出 readeStream .pipe( gzip ) .pipe( writeStream )