这里给大家分享下后端人员如果利用nodejs对数据的一些处理情况 适用于初学者使用 大牛勿喷
给大家分享下主要后端思想部分代码,前端部分就不展示了
const http = require("http"); const fs = require("fs"); const url=require("url"); const path = require("path"); const util = require("./util"); const Mock = require("./src/app/mock/node_modules/mockjs"); //创建一个服务 let arr = [];//用来存放下面建立的json文件的数据 const server = http.createServer((request, response) => { //首先我们会接受静态请求和接口请求 通过封装函数来实现对其不同的操作 //首先我们对请求进行分类 let filePath = request.url == "/" ? "login.html" : url.parse(request.url).pathname; //console.log(filePath) if (path.extname(filePath)) { //存在后缀就是静态资源文件请求 util.fileRead(path.join("./src", filePath), response) } else if (filePath == "/api/login") { //声明一个对象给前端返回后端处理的数据请求结果 let opj = { code: 1, msg: "请求成功" } //接受前端给我发过来的请求体 util.getData(request, (data) => { console.log(data, "前端请求数据结果") //登录的ajax请求 //我们利用一个json文件模拟本地数据库 //首先判断我们这个数据库存在不存在 if (fs.existsSync("./data.json")) { //存在的情况下 //和数据库的数据进行比较 //读取数据库文件资源 let dataAll = JSON.parse(fs.readFileSync("./data.json", "utf8")); data = JSON.parse(data) //console.log(data, "dengluqingqiu............") //检验是不是账号密码不对 let flag = dataAll.find(item => { return item.user == data.user && item.pwd == data.pwd; }); let flag1 = dataAll.find(item => { return item.user == data.user; }) //console.log(flag, "**************") //检测是不是这个名字就不存在了 if (!flag) { //找不到证明验证失败 opj.code = 0; opj.msg = "用户名或者密码输入错误" } if (!flag1) { opj.code = 0; opj.msg = "该用户没有被注册" } } else { //不存在的情况下 opj.code = 0; opj.msg = "该用户没有被注册" } //返回后端处理结果 //console.log(JSON.stringify(opj)) //console.log(opj, "--------------------") response.end(JSON.stringify(opj)) }) } else if (filePath == "/api/register") { //声明一个对象给前端返回后端处理的数据请求结果 let opj = { code: 1, msg: "注册成功" } //注册页面发来的ajax请求 //接受ajax传过来的数据 util.getData(request, data => { //console.log(data, "前端请求数据结果") console.log(data, "这里") data = JSON.parse(data); let f = arr.some(item => { return item.user == data.user }) if (!f) { arr.push(data); } //首先在这个请求中我们还是利用一个json文件代替数据库 //判断这个文件是不是存在 不存在创建 if (!fs.existsSync("./data.json")) { //不存在的情况下 //创建 if (arr.length) { fs.writeFileSync("./data.json", JSON.stringify(arr)); } } else { //存在的情况下 //获取这个文件收据进行遍历 let read = JSON.parse(fs.readFileSync("./data.json", "utf8")); let flag = read.some(item => { return item.user == data.user }); if (flag) { opj.code = 0; opj.msg = "该用户已被注册过" } fs.writeFileSync("./data.json", JSON.stringify(arr)); } response.end(JSON.stringify(opj)) }) } else if (filePath === "/api/main") { util.getData(request,data=>{ //console.log(data,"**********"); let {page,limit}=data; //利用mock随机生成图片 let images=Mock.Random.image("200x200","#f00","chen"); //利用传过来的参数随机生成一个数据给前端返回回去 let mockData=Mock.mock({ [`list|${limit}`]:[ { title:'@ctitle', 'id|+1':(page-1)*limit, img:images } ] }); //将这个随机创造的数据返回给前端 response.end(JSON.stringify(mockData)) }) } }); //监听这个服务 server.listen(8000, () => { console.log(server.address().port) })
其中上述代码用到个几个封装如下 上述代码依然可以优化 怕优化太多不易理解 有能力的同学可以自己优化下
const url = require("url"); const fs = require("fs"); module.exports={ fileRead(rootPath,response){ //此函数是对文件的读取 与判断文件是否存在滴 if(fs.existsSync(rootPath)){ //文件存在的情况 读取返回 fs.readFile(rootPath,(err,data)=>{ if(err) throw err; response.end(data.toString()) }) }else{ //文件不存在的情况下 改状态码 response.ststusCode=404; response.end() } }, getData(request,callBack){ //第一个参数是请求体 第二个参数是回调函数 //封装一个函数用来判断是get请求还是post请求 if(request.method==="POST"){ let data=""; request.on("data",chunk=>{ data+=chunk; }); request.on("end",()=>{ callBack(data) }) }else if(request.method=="GET"){ //注意这里第二个参数加个true可以 很有灵性 //将page=1&limit=15转换成对象 方便了后端人员的数据处理 let data=url.parse(request.url,true).query; callBack(data) } } }
其实主要思想也就那几个
首先 我们需要创建一个服务 然后在这个服务中判断一下我们接受的http都是那些
无非就是两种 一种是静态资源的加载 也就是我们的html页面的加载和css js的一些引入加载
另一种就是我们的一些ajax接口的请求 通过前端人员给我们发送过来的请求 然后我们对其进行
处理后给前端返回处理后的结果 这时前端人员就可以根据我们的结果进行一系列的页面操作
上述代码 还有不完整处 有时间在补充
没有对icon图标的处理 这里如果浏览器加载一次后就不会继续像服务器发送请求了
会从缓存中读取的
还有没有判断 既非接口也非静态文件资源的情况
也就是我们上网时常见的404页面走丢了那类网页 所以这里只需加载一个html页面即可
整体而言也就这些了 欢迎有不同想法或者思路的人在下方指出 您的评价是我进步的阶梯
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!