-
querystring
-
功能:Node.js中的字符
-
核心方法
- parse(将String – > Object)
parse( str , arg1 , arg2)
str: 你要处理的字符
arg1: 分隔字符
arg2:
将 = 转化为 : , (这句话前提是 & 符号是提前被转化的)
var str = 'http://www.baidu.com:8080/001?a=1&b=2#hash=20' var obj = qs.parse( str,'?','&' ) // console.log(obj);//[Object: null prototype] { 'http://www.baidu.com:8080/001?a': '1', b: '2#hash=20' }
- stringify(将Object -> String)
//console.log(qs.stringify(obj))//http%3A%2F%2Fwww.baidu.com%3A8080%2F001%3Fa=1&b=2%23hash%3D20
- escape(将中文字符编码)
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) ))
- parse(将String – > Object)
-
-
http
核心方法- get
- request
- 小爬虫
如何爬虫?
使用数据请求一段内容,然后将这段内容做数据清洗,最后在通过后端服务器发送到前台页面
- 数据请求, 获得数据
- 数据清洗 ( 工具 cheerio )
- 安装 cheerio
$ cnpm i cheerio -S
- 使用cheerio
- 发送给前台
-
events
var Events = require('events')
class MyEvents extends Events {}
var myEvents = new MyEvents ()
// console.log( myEvents )
// 声明事件
myEvents.on('aa',function(){
console.log( 'hello Node.js' )
})
// 事件的触发
myEvents.emit('aa')
- fs
- fs是Node.js中文件系统
- 功能: 操作文件或是目录
- 文件:
增: writeFile(路径,内容 , 错误优先的回调)
删: unlink(路径,错误优先的回调)
改: appendFile(路径,内容 , 错误优先的回调)(加在原始内容后面)
查: readFile(路径,回调函数(抛错,抛错))
var fs = require( 'fs' ) // 文件的操作 // 增(创建) fs.writeFile('./dist/2.text','hello Node.js',function(error){ if( error ) throw error }) // 改 fs.appendFile('./dist/2.text','\nhello nodejs','utf8',function( error ){ if( error ) throw error console.log( 'update success' ) }) // 查 fs.readFile( './dist/2.text','utf8',function( error ,data ){ if( error ) throw error; console.log(data); console.log('read success'); }) // 删 fs.unlink( './dist/2.text', function( error ) { if( error ) throw error; console.log( 'delete success' ); } )
- 目录
增:mkdir(路径+目录名, 错误优先的回调)
删:rmdir(路劲,错误优先的回调)(只能删除文件夹)
改:rename(原始路径+目录名,原始路径+修改目录名, 错误优先的回调)
查:readdir(路劲,回调函数(内容,抛错))
- 文件:
var fs = require( 'fs' )
// 目录-增
fs.mkdir('./dist1',function( error ){
if( error ) throw error
console.log('create success');
})
// 目录-改
fs.rename('./dist1' , './fs_dist1',function ( error ){
if ( error ) throw error
console.log('update success')
})
// 目录-查
for(var i = 0 ;i < 10 ;i++){
fs.writeFile( `./fs_dist1/${i}.text`,i,function( error ){
if ( error ) throw error;
console.log(`第${i}个文件创建成功`);
} )
}
fs.readdir('./fs_dist1','utf-8',function( error ,data ){
if( error ) throw error;
//console.log(data) //[ '0.text',
// '1.text',
// '2.text',
// '3.text',
// '4.text',
// '5.text',
// '6.text',
// '7.text',
// '8.text',
// '9.text' ]
for( var i = 0 ; i < data.length ; i++){
fs.readFile(`./fs_dist1/${i}.text`,'utf-8',function( error ,content ){
if( error ) throw error;
console.log(content)
})
}
})
// 目录-删
//fs.rmdir(path,callback) 这个方法只能删除空目录
fs.rmdir('./fs_dist',function( error ) {
if( error ) throw error
})
fs.readdir('./fs_dist1','utf-8',function( error , data ){
if( error ) throw error;
for( var i = 0 ;i < data.length ; i++){
fs.unlink(`./fs_dist1/${i}.text`,function( error ){
if ( error ) throw error
})
}
})
fs.rmdir('./fs_dist1',function( error ){
if( error ) throw error
})
-
stream
stream 流: 减少内存消耗, 增加效率 可读的流 可写的流 举例: 压缩包的创建 名词: pipe --> 管道流
//首先你得先建1.text文件 //大致流程:先读取文件内容,再创建空压缩包,最后写入内容 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 )
-
Node.js原生路由
- 路由就是页面上方地址栏后方地址
var http = require( 'http' ) var fs = require( 'fs' ) http.createServer( function ( req, res ) switch ( req.url ) { case '/home': res.write('home') res.end() break; case '/mine': res.write('mine') res.end() break; case '/login': //在static目录下创建一个网页, fs.readFile( './static/login.html',function ( error , data ) { if ( error ) throw error res.write( data ) res.end() }) break; default: break; } }).listen( 8000, 'localhost', function () { console.log( '服务器运行在: http://localhost:8000' ) })