保持对代码的热爱并保持怀疑态度
普通的服务端开启
const http=require("http"); //引入模块
const fs=require("fs") //文件模块
// console.log(http);
http.createServer((req,res)=>{ //创建node服务 ,req是从前端到后端 res从后端到前端
if(req.url!=="/favicon.ico"){ //过滤图标
fs.readFile("./www"+req.url,(err,data)=>{ //读取文件 ,设置根目录,判断是否异常
if(!err){
res.write(data)
}else{
res.write(404)
}
res.end(); //结束请求
})
}
}).listen("3000") //设置端口号
--------------------------------------
const http=require("http");
const fs=require("fs");
const url=require("url");
const qs=require("querystring");
http.createServer((req,res)=>{
if(req.url!=="/favicon.ico"){
let urlObj=url.parse(req.url,true); //获取到req的url,true表示里面的一个属性querry转为对象格式
// console.log(urlObj);
if(urlObj.pathname==="/api"){ //请求地址
// ajax处理
ajaxHandle(req, res);
}else{
//文件处理
findHandle(req,res);
}
}
}).listen("3000");
function ajaxHandle(req,res){
let urlObj=url.parse(req.url,true);
// 获取post方式发送的数据
// req身上的data事件,会在post发送数据时被多次触发,每次触发时会拿到一个数据碎片,每次拿到一个数据碎片都需要手动拼接起来
let str="";
req.on("data",(res)=>{
str+=res;
})
// req身上的end事件,会在post数据发送结束后被触发,此时查看拼接之后的数据碎片,就是完整的post数据了
req.on("end",()=>{
let resObj=null;
if(str===""){ //如果等于空也就是没有拼接数据也就不是get请求,那就走post
resObj = urlObj.query; //url模型身上的query,取得地址
}else{
resObj=qs.parse(str) //数据模型身上的方法parse
}
console.log(resObj);
})
}
function findHandle(req,res){
fs.readFile("./www"+req.url, (err, data)=>{ //读取文件
if(err){
res.write("404"); //异常报错
}else{
res.write(data); //执行
}
res.end();
})
}
input表单realonly会把数据带往后端,disabled不会 区别
dl.js:54 {userid: "userid_5826182706037979", user: "123456", pass: "123456", flag: 1}