node原生
js代码
node运行js文件,会将该js文件闭包,并且有5个默认参数:module,exports,require,__dirname,__filename
在文件开头会自动加上module.exports=exports={};
在文件结尾会自动加上 return module.exports;
Buffer
new Buffer(内容)
有copy方法和concat方法
文件操作
let fs = require('fs');
fs.readFile(文件路径,'默认utf8可不写该参数',function(err,data){//异步
读取的data是字符串形式的数据
})
fs.writeFile(文件路径,写入数据:需要转成字符串形式的,function(err){//异步 默认是以utf8编码
})
同步
writeFileSync readFileSync
流操作
1)可读文件流:
let rs=fs.createReadStream(文件路径,{highWaterMark:int类型})//表示每次读int*1024b的数据,默认值64k
node内部会不停触发一个data事件
rs.on('data',function(chunk){
监听到data事件 chunk是读取的Buffer类型
rs.pause()//暂停读流
rs.resume()//恢复读流
})
rs.on('end',function(){
文件读取完毕触发
})
2)可写文件流
let ws=fs.createWriteStream(文件路径,{highWaterMark:int类型})默认16k
let flag=ws.write(数据buffer类型或字符串类型)返回值为真假值,表示数据大小是否超出水位线
ws.on('drain',function(){
当内存中的数据全部写入文件时触发
})
ws.end(可传数据)强行写入文件最后关闭
3)读文件到另一个文件
rs.pipe(ws)
可读文件流.pipe(可写文件流)
node的内置模块
let util = require('util')
util.inherits(子,父)继承
let path = require('path');
path.resolve(...,..,..)多个地址拼接起来,会自动加上__dirname
path.join(__dirname,...)地址拼接
let url = require('url')
url.parse(url网址,true)会将url解析成对象,其中pathname有用,true表示将query解析成对象形式
require('mime').getType(根据pathname匹配content-type)
搭建服务器
let http = require('http');
http.createServer(function (req,res) {
req是可读流 res是可写流
req.url
req.method
req.headers
res.setHeader(key,value)
res.statusCode=
res.write()
res.end()
}).listen(端口号数值类型,function(){})