总结
文件流
var fs = require('fs');
// 如果文件存在 则向文件中写入内容 如果文件不存在则创建该文件并写入内容
var writeStream = fs.createWriteStream('要写入内容的文件地址')
writeStream.write('要写入的内容', 'utf-8');
// 用来标记结尾
writeStream.end()
writeStream.on('finish', function() {
})
writeStream.on('error', function() {
})
// 读取文件流的方法
var readStream = fs.createReadStream('要读取内容的文件地址');
var text = ''
// 监听读流的过程
readStream.on('data', function(chunk) {
text += chunk
})
// 监听读流结束
readStream.on('end', function() {
})
// 监听发生的错误
readStream.on('error', function() {
})
// 利用管道流实现文件复制
readStream.pipe(writeStream)
http/url/fs混用搭建服务器
var http = require('http');
var fs = require('fs');
var url = require('url');
var path = require('path');
http.createServer(function(req, res) {
// 获取路由对象中的pathname值
// url.parse(req.url) 作用是将获取到的url转变成路由对象
// {
// protocol: 'https:', 连接中的传输协议
// slashes: true,
// auth: null,
// host: 'www.baidu.com', 连接中的域名
// port: null,
// hostname: 'www.baidu.com',连接中的域名
// hash: '#index?md=mobile', 哈希值
// search: null,
// query: null,
// pathname: '/index.html',
// path: '/index.html',
// href: 'https://www.baidu.com/index.html#index?md=mobile'
// }
var pathname = url.parse(req.url).pathname;
// 获取文件的扩展名
var extname = path.extname(pathname);
pathname = pathname == '/' ? '默认渲染的html文件的地址' : pathname
function getExtType (ext) {
var str = ''
switch (ext) {
case '.html':
str = "text/html"
break;
case '.css':
str = "text/css"
break;
case '.js':
str = "text/javascript"
break;
}
return str
}
var type = getExtType(extname)
fs.readFile('./static' + pathname, function(err, data) {
if(err) {
fs.readFile('要渲染的错误文件的文件地址', function(err, errPage) {
res.writeHead(404, {
"Content-type": `${
type};charset=utf-8`})
res.write(errPage)
res.end()
})
} else {
res.writeHead(200, {
"Content-type": `${
type};charset=utf-8`})
res.write(data)
res.end()
}
})
}).listen(3000, function() {
})