這里給大家分享下后端人員如果利用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頁面即可
整體而言也就這些了 歡迎有不同想法或者思路的人在下方指出 您的評價是我進步的階梯