欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-04 08:47:27
模块分离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;//向对象中添加用户可能发出的请求hand...

模块分离

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

相关标签: nodejs