1、文件操作:*fs模块-->操作文件-->io-->node的特长fs模块是node非常重要的模块,能体现出node的优势
- fs.readFile() 读文件
- fs.writeFile() 写文件
- fs.appendFile() 在文件的内部去追加写一些内容
- fs.mkdir() 创建文件夹
- fs.readdir() 读文件夹
- fs.access() 判断路径
- fs.stat()
isFile:用于判断被查看的对象是否为一个文件,如果是返回true,否则,返回false;
isDirectory:用于判断被查看的对象是否为一个目录,如果是的话则返回true,否则,返回false;
isBlockDevice:用于判断被查看的文件是否为一个块设备文件,如果是的话则返回true,否则,返回false(仅在Unix操作系统下有效);
isCharacterDevice:用于判断被查看的文件是否为一个字符设备文件,如果是的话则返回true,否则,返回false(仅在Unix操作系统下有效);
isSymbolicLink:用于判断被查看的文件是否为一个符号链接文件,如果是的话则返回true,否则,返回false。该方法仅在lstat方法的回调函数中有效;
isFIFO:用于判断被查看的文件是否为一个FIFO,如果是的话则返回true,否则,返回false(仅在Unix操作系统下有效);
isSocket:用于判断被查看的文件是否为一个socket文件,如果是的话则返回true,否则,返回false(仅在Unix操作系统下有效);
2、创建 HTTP 服务器
`http.createServer([requestListener])`
- 通过监听Event: 'request'来进行
server.on('request',(request,response) => {});
- request、response对象
request对象,用于接收请求报文内的信息
response对象,用于返回响应报文内的信息
- response.write()
write方法用于向响应体里写内容,用于向客户端发送信息,可以被多次使用
- response.end()
在一次请求和响应过程当中,只要调用了 end 就不能再继续 write 了
就说明你是在一次请求和响应处理过程中已经结束了响应,但是又去 向客户端发送数据
这个时候就会报错
- server.listen(port[, hostname][, backlog][, callback])
监听端口,执行这句,服务正式被启动使用
server.listen(3000,'127.0.0.1',() => {
console.log('server is listening at port 3000');
});
### request
- request.headers 请求头
- request.method 请求方法
- request.url 请求路径
- request.httpVersion 请求HTTP协议版本
### response
- res.writeHead(200,{'Content-Type': 'text/html; charset=utf-8'});
设置响应报文头
- res.write('<h1>hello world</h1>');
- res.end();
### Content-Type
内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,
决定文件接收方将以什么形式、什么编码读取这个文
### 通过 req.url和req.method的不同给出不同的响应
if (req.url == '/' && req.method == 'GET') {
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
});
res.write('<h1>首页</h1>');
res.end();
}
### request通过data事件和end事件来接收post的数据
···let data = '';
req.on('data', (chunk) => {
data += chunk;
});
req.on('end', () => {
console.log(data);
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
});
res.write('<h1>收到数据了</h1>');
res.end();
});···
### 通过 querystring解析post的数据
···querystring.parse('foo=bar&baz=qux&baz=quux&corge')
// returns { foo: 'bar', baz: ['qux', 'quux'], corge: '' }···
### url
- url.parse(urlStr, [parseQueryString], [slashesDenoteHost])
urlStr->url字符串
parseQueryString->为true时将使用queryString分析查询字符串,默认为false
slashesDenoteHost
默认为false,//foo/bar 形式的字符串将被解释成 { pathname: ‘//foo/bar' }
如果设置成true,//foo/bar 形式的字符串将被解释成 { host: ‘foo', pathname: ‘/bar' }