这里给大家分享下后端人员如果利用nodejs对数据的一些处理情况 适用于初学者使用 大牛勿喷
给大家分享下主要后端思想部分代码,前端部分就不展示了
1 const http = require("http"); 2 const fs = require("fs"); 3 const url=require("url"); 4 const path = require("path"); 5 const util = require("./util"); 6 const Mock = require("./src/app/mock/node_modules/mockjs"); 7 8 //创建一个服务 9 let arr = [];//用来存放下面建立的json文件的数据 10 const server = http.createServer((request, response) => { 11 //首先我们会接受静态请求和接口请求 通过封装函数来实现对其不同的操作 12 //首先我们对请求进行分类 13 let filePath = request.url == "/" ? "login.html" : url.parse(request.url).pathname; 14 //console.log(filePath) 15 if (path.extname(filePath)) { 16 //存在后缀就是静态资源文件请求 17 util.fileRead(path.join("./src", filePath), response) 18 } else if (filePath == "/api/login") { 19 20 //声明一个对象给前端返回后端处理的数据请求结果 21 22 let opj = { 23 code: 1, 24 msg: "请求成功" 25 } 26 //接受前端给我发过来的请求体 27 util.getData(request, (data) => { 28 console.log(data, "前端请求数据结果") 29 //登录的ajax请求 30 //我们利用一个json文件模拟本地数据库 31 //首先判断我们这个数据库存在不存在 32 if (fs.existsSync("./data.json")) { 33 //存在的情况下 34 //和数据库的数据进行比较 35 //读取数据库文件资源 36 let dataAll = JSON.parse(fs.readFileSync("./data.json", "utf8")); 37 data = JSON.parse(data) 38 //console.log(data, "dengluqingqiu............") 39 //检验是不是账号密码不对 40 let flag = dataAll.find(item => { 41 return item.user == data.user && item.pwd == data.pwd; 42 }); 43 let flag1 = dataAll.find(item => { 44 return item.user == data.user; 45 }) 46 //console.log(flag, "**************") 47 //检测是不是这个名字就不存在了 48 if (!flag) { 49 //找不到证明验证失败 50 opj.code = 0; 51 opj.msg = "用户名或者密码输入错误" 52 } 53 if (!flag1) { 54 opj.code = 0; 55 opj.msg = "该用户没有被注册" 56 } 57 58 } else { 59 //不存在的情况下 60 opj.code = 0; 61 opj.msg = "该用户没有被注册" 62 } 63 //返回后端处理结果 64 //console.log(JSON.stringify(opj)) 65 //console.log(opj, "--------------------") 66 response.end(JSON.stringify(opj)) 67 }) 68 } else if (filePath == "/api/register") { 69 //声明一个对象给前端返回后端处理的数据请求结果 70 let opj = { 71 code: 1, 72 msg: "注册成功" 73 } 74 //注册页面发来的ajax请求 75 //接受ajax传过来的数据 76 util.getData(request, data => { 77 //console.log(data, "前端请求数据结果") 78 console.log(data, "这里") 79 data = JSON.parse(data); 80 let f = arr.some(item => { 81 return item.user == data.user 82 }) 83 if (!f) { 84 arr.push(data); 85 } 86 //首先在这个请求中我们还是利用一个json文件代替数据库 87 //判断这个文件是不是存在 不存在创建 88 if (!fs.existsSync("./data.json")) { 89 //不存在的情况下 90 //创建 91 if (arr.length) { 92 fs.writeFileSync("./data.json", JSON.stringify(arr)); 93 } 94 } else { 95 //存在的情况下 96 //获取这个文件收据进行遍历 97 let read = JSON.parse(fs.readFileSync("./data.json", "utf8")); 98 let flag = read.some(item => { 99 return item.user == data.user 100 }); 101 if (flag) { 102 opj.code = 0; 103 opj.msg = "该用户已被注册过" 104 } 105 fs.writeFileSync("./data.json", JSON.stringify(arr)); 106 } 107 response.end(JSON.stringify(opj)) 108 }) 109 110 } else if (filePath === "/api/main") { 111 util.getData(request,data=>{ 112 //console.log(data,"**********"); 113 let {page,limit}=data; 114 //利用mock随机生成图片 115 let images=Mock.Random.image("200x200","#f00","chen"); 116 //利用传过来的参数随机生成一个数据给前端返回回去 117 let mockData=Mock.mock({ 118 [`list|${limit}`]:[ 119 { 120 title:'@ctitle', 121 'id|+1':(page-1)*limit, 122 img:images 123 } 124 ] 125 }); 126 //将这个随机创造的数据返回给前端 127 response.end(JSON.stringify(mockData)) 128 }) 129 } 130 }); 131 132 //监听这个服务 133 server.listen(8000, () => { 134 console.log(server.address().port) 135 })
其中上述代码用到个几个封装如下 上述代码依然可以优化 怕优化太多不易理解 有能力的同学可以自己优化下
1 const url = require("url"); 2 const fs = require("fs"); 3 module.exports={ 4 fileRead(rootPath,response){ 5 //此函数是对文件的读取 与判断文件是否存在滴 6 if(fs.existsSync(rootPath)){ 7 //文件存在的情况 读取返回 8 fs.readFile(rootPath,(err,data)=>{ 9 if(err) throw err; 10 response.end(data.toString()) 11 }) 12 }else{ 13 //文件不存在的情况下 改状态码 14 response.ststusCode=404; 15 response.end() 16 } 17 }, 18 getData(request,callBack){ 19 //第一个参数是请求体 第二个参数是回调函数 20 //封装一个函数用来判断是get请求还是post请求 21 if(request.method==="POST"){ 22 let data=""; 23 request.on("data",chunk=>{ 24 data+=chunk; 25 }); 26 request.on("end",()=>{ 27 callBack(data) 28 }) 29 }else if(request.method=="GET"){ 30 //注意这里第二个参数加个true可以 很有灵性 31 //将page=1&limit=15转换成对象 方便了后端人员的数据处理 32 let data=url.parse(request.url,true).query; 33 callBack(data) 34 } 35 } 36 }
其实主要思想也就那几个
首先 我们需要创建一个服务 然后在这个服务中判断一下我们接受的http都是那些
无非就是两种 一种是静态资源的加载 也就是我们的html页面的加载和css js的一些引入加载
另一种就是我们的一些ajax接口的请求 通过前端人员给我们发送过来的请求 然后我们对其进行
处理后给前端返回处理后的结果 这时前端人员就可以根据我们的结果进行一系列的页面操作
上述代码 还有不完整处 有时间在补充
没有对icon图标的处理 这里如果浏览器加载一次后就不会继续像服务器发送请求了
会从缓存中读取的
还有没有判断 既非接口也非静态文件资源的情况
也就是我们上网时常见的404页面走丢了那类网页 所以这里只需加载一个html页面即可
整体而言也就这些了 欢迎有不同想法或者思路的人在下方指出 您的评价是我进步的阶梯