node.js-- 路由的简单配置与封装 | 获取get和post传值

一、路由的简单配置

let http=require("http");
http.createServer((require,response)=>{
     
    let path = url.parse(require.url);   //获取路径信息
    let pathname=path.pathname;          //获取路径

    if(pathname!="/favicon.ico"){
         //处理掉不需要的“/favicon.ico”请求
        response.writeHead(200,{
     "Content-Type":"text/html;charset=utf-8;"});
        //根据路径依次配置
        if(pathname=="/"){
     
            response.end("首页");
        }
        if(pathname=="/login"){
     
            response.end("登录");
        }
        if(pathname=="/my"){
     
            response.end("我的");
        }
        response.end();  //必须在请求后写end方法  否则服务器一直运行
    }
}).listen(8000,"127.0.0.1",()=>{
     
    console.log("http://127.0.0.1:8000");
 })

二、路由的封装

在上述路由的简单配置下,做以下封装:

1.建立一个路由文件 router.js
2.在文件中添加需要的路由,并暴露出去,以下是以对象的形式暴露
module.exports={
     
    "/":(require,response)=>{
     
        //在此可以进行相关页面的渲染,以下同
        response.end("首页");
    },
    "/login":(require,response)=>{
     
        response.end("登录");
    },
    "/my":(require,response)=>{
     
        response.end("我的");
    },
}

3.在需要的文件引入路由文件
let http = require("http");
let router = require("./router");    //引入路由文件
let path = url.parse(require.url);   //获取路径信息
let pathname=path.pathname;          //获取路径
http.createServer((require,response)=>{
     
    if(pathname!="/favicon.ico"){
     
        response.writeHead(200,{
     "Content-Type":"text/html;charset=utf-8;"});
        //以 对象[键值] 的方式去找相应的路径
        if(router[pathname]){
        //router[pathname] 如果该路径存在
           //暴露出的对象中的每个键都是一个函数,执行该函数,并传递相应的参数
            router[pathname](require,response);        
        }else{
     
            response.end("404");
        }
    }
}

三、获取get和post传值(结合路由)

  • 获取get传值(以下面的表单为例)
1.在登录页面造一个表单   提交路径为"/index" get提交方式
/*用户名:admin  密码:12345*/
<form action="/index" method="get">
   <ul>
      <li><label for="">用户名:</label><input name="userid" type="text"></li>
      <li><label for=""> 密码 :</label><input name="userpwd" type="text"></li>
      <li><input type="submit"></li>
  </ul>
</form>
2.在路由文件 配置 “/index ” 路由时,获取表单传值
module.exports={
     
   "./index":(require,response)=>{
     
       console.log(require.url);   ///index?userid=admin&userpwd=12345
       let path = url.parse(require.url,true).query;   //解析路径,取路径信息的路径值
       console.log(path);    //path值 即为 获取到的get传值  
       //输出{ userid: 'admin', userpwd: '12345' }
    }
}
3.运行调用路由的界面 即可输出相应的值
  • post传值(以下面的表单为例)
1.在登录页面造一个表单   提交路径为"/index" post提交方式
/*用户名:admin  密码:12345*/
<form action="/index" method="post">
   <ul>
      <li><label for="">用户名:</label><input name="userid" type="text"></li>
      <li><label for=""> 密码 :</label><input name="userpwd" type="text"></li>
      <li><input type="submit"></li>
  </ul>
</form>
2.在路由文件 配置 “/index ” 路由时,获取表单传值
---get传值不同的是,post传值不能用解析路径的方式直接获取
---post传值需要通过事件车获取

module.exports={
     
   "./index":(require,response)=>{
     
       let info= "?";  //为后边转换为get传值的路径格式
       //data事件: 如果有数据可读时,执行后面的回调函数
       require.on("data",(result)=>{
     
          info+=result;
       })
       //end 事件:在数据读取结束后,执行后面的回调函数
       require.on("end",()=>{
       
   /*
   --info值本为userid=admin&userpwd=12345 类似get传值的路径值(比get路径少个“?”问号)--
   --可事先给info赋值为“?” 后续数据追加  将其强行转换为get传值的路径格式,再进行解析--
   */
         console.log(info);   
         //输出?userid=admin&userpwd=12345
         console.log( url.parse(info,true).query);
         ejs.renderFile("view/index.html",(error,str)=>{
     
             if(error){
     
               throw error;
             }
             response.end(str);
        })
     })
  } 
}

你可能感兴趣的:(node.js-- 路由的简单配置与封装 | 获取get和post传值)