特性:
- 单线程:减少了内存开销
- 非阻塞I/O, 不会傻等I/O语句结束,而是会执行后边的语句
- 事件机制,时间环:不管是新用户的请求,还是老用户 I/O完成,都将以事件方式加入时间环,等待调度
- Nodejs没有根目录的概念,也没有web容器,只有路由设置的路径文件才能访问
- URL 是通过Node的顶层路由设计,呈递某一个静态文件的
- path.extname(pathname) 获取后缀
response
// createServer:
var server = http.createServer(function(req, res ){
if(req.url=='/'){
console.log('服务器接收到了请求')
// .writeHead 响应头
//1. res.writeHead(200, {"Content-Type":"text/plain; charset=UTF8})
//2. res.setHeader("Content-Type", "text/html");
res.write('<h1>这是一个标题</h1>');
res.end(); // 必须有end,不然服务器不停止
// res.end('这里是返回页面的内容');
}
}).listen(3000, 'localhost' )
request
- 最关键的就是req.url属性,表示用户的请求URL地址
// 识别url
var url= require('url');
var path = url.parse(req.url)
var path = url.parse(req.url, true ) // .parse 把url分成好几部分组成的对象
href:全部
protocol: http:
slashes: 是否有 斜线
host:主机和端口
pathname:路径
search:问号以及以后的内容
path:pathname+search
遍历文件夹
// 遍历album里边左右的文件、文件夹
fs.readdir('./album/', function(err,files){
//files是一个存放文件名的数组
var wenjianjia = [];
// 迭代器就是强行把异步变成同步
(function iterator(i){
if(i == files.length){
return;
}
fs.stat('./album/' + files[i], function(err,stats){
// 检测是不是文件夹
if(stats.isDirectory()){
wenjianjia.push(files[i])
}
iterator(i+1)
})
})(0)
})
fs
fs.mkdir // 创建文件夹
fs.rmdir // 删除文件夹
fs.stat(path,callback); // 返回文件或文件夹的状态
fs.readdir // 读取文件夹里的所有文件
fs.readFile // 读取文件
网友评论