当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 模块分离,创建启动服务的方法,并判断用户发出的请求

模块分离,创建启动服务的方法,并判断用户发出的请求

2020年07月23日  | 移动技术网IT编程  | 我要评论

模块分离

1 index.js 启动服务

var serve=require("./serve");//导入服务的模块---创建serve模块
//默认的请求 eg:localhost:8081
//用户的请求可能访问index、login eg:local:8081/index
//创建一个空对象,里面添加用户可能的请求

var api=require("./api");
var handle={};
handle["/index"]=api.index;//向对象中添加用户可能发出的请求
handle["/login"]=api.login;
handle["/register"]=api.register;
//console.log(handle);
// {
//     '/index': [Function: index],
//     '/login': [Function: login],
//     '/register': [Function: register]
//   }
serve.start(handle);//通过start方法启动服务

2 serve.js 创建服务

var http=require("http");
var url=require("url");
var rout=require("./route");
//创建启动服务的方法
function start(handle){
    //把创建服务的回调函数分离出来
    // handle参数是启动模块传递过来的接口的集合
    function  creat(req,res){
        //res.end("hello world");
        //console.log(handle)
        //console.log(pathname)
        var pathname=url.parse(req.url).pathname;//地址栏中域名后面的内容
        res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})
        // 将handle对象和pathname全部传递给路由文件 从中可以看到handle[pathname]
        var cont=rout.router(handle,pathname);//handle 就是对象(存放接口),pathname是用户发出的请求,eg:域名/index
        res.write(cont);  
    }
     // 当start函数被调用的时候 启动node服务
    http.createServer(creat).listen(3000,function(){
        console.log("服务启动了")
    })
}
module.exports={
    start
}

3 api.js 处理用户的请求

//处理接口 可以用来存放后台接口
//单独封装一个模块处理客户端请求
function index(){
    return "您进入了主页面"
}
function login(){//比如该函数用来出来用户发出的 /login的请求
    return "您登录成功了"
}
function register(){
    return "注册成功"
}
module.exports={
    index,
    login,
    register
    
}

4 route.js 路由 如果访问不了就返回404(处理错误),访问成功,执行对应的方法

function router(hand,pathname){
    console.log(hand);//对象
    // {
    //     '/index': [Function: index],
    //     '/login': [Function: login],
    //     '/register': [Function: register]
    //   }
    // 接收到hand对象和请求地址中的pathname的值 handle[pathname]
    if(typeof hand[pathname]=="function"){
        return hand[pathname]();//判断对象的key,是不是一个方法,是就返回执行对应的方法
    }else{
        return "404";
    }
}
module.exports={
    router
}

本文地址:https://blog.csdn.net/W8034/article/details/107520102

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网