对于node中路径的解析,常见的有两种方式:
一,根据路径经行业务处理的应用是静态文件服务器,可以根据路径去查找磁盘中的文件
function(req,res){
var pathname=url.parse(req.url).pathname;
fs,readFile(path.join(Root,pathname),function(err,file){
if(err){
................
return;
}
else{
...............
}
}
);
}
二,可以根据路径来选择控制器
如:/control/action/a/b/c
control为具体的控制器,action为具体的行为,如增删改查,剩余为参数
function(req,res){
var pathname=url.parse(req.url).pathname;
var paths=pathname.split("/"); //把url转为数组 [control,action,a,b,c]
var controller=paths[0]||'index'; //如果没有控制器,使用默认的index控制器
var action=paths[1]||'index';
var args=paths.slice(2); //把后面的参数都放置到一个数组里
if(handles[controller]&&handles[controller][action]){
//如果定义了上述的控制器和action处理
handles[controller][action].apply(null,[req,res].concat(args));
}
else{
res.wirteHead(500);
res.end();
}
}
有了上面的分发,我们就可以专注于业务,
var handles={};
handles.index={};
handles.index.index=function(req,res,arg1,arg2){
//其他处理
}
handles.control1={};
handles.control1.delete=function(req,res,arg1,arg2){
//其他处理
}