版权声明:所有原创文章未经本人同意不得随意转载,谢谢 https://blog.csdn.net/tangcc110/article/details/82968152
文章是按“开课吧”(class6)的学习路径写的。
目录结构:
1.test.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>nodejs practise</title> </head> <body> username: <input type="text" id = "user" placeholder="请输入用户名"> psw: <input type="text" id="psw" placeholder="请输入密码"> <input onclick="register()" type="button" value="注册"> <input onclick="login()" type="button" value="登录"> <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> let user = document.getElementById("user"); let psw = document.getElementById("psw"); function register(){ $.ajax({ type: "post", data: {"action": "regist", "user": user.value, "psw": psw.value}, url: "/user", success: function (data) { var json = eval("("+data+")"); // 这里一定要用eval("(x = y)") 转换并返回 alert(json.msg) } }) } function login(){ $.ajax({ type: "post", data: {"action": "login", "user": user.value, "psw": psw.value}, url: "/user", success: function (data) { console.log("data=",data); var json = JSON.parse(JSON.stringify(data)) alert(json) } }) } </script> </body> </html>
2.server.js
const http = require("http"); //http传输协议处理模块 const fs = require("fs"); // 文件处理模块,非流式处理,流式处理用stream const querystring = require("querystring"); // 处理分段返回的数据,转换为json对象 const urlLib = require("url"); // 处理理url ,取得参数对象json格式 //简单的接口设计 // localhost:8087/user?action=regist&user=tcc&psw=123456 // localhost:8087/user?action=login&user=tcc&psw=123456 let users = {}; // 现在我们没有数据库,所以定义一个对象来存储用户的信息. http.createServer(function(req,res){ let str = ""; req.on("data",function(data){ str += data; // 分多次处理前台提交的数据,所以要拼接起来 }) req.on("end",function(){ let urlObj = urlLib.parse(req.url); // 转为json let pathname = urlObj.pathname; let queryObj = urlObj.query; let fileName = "./www" + pathname; // 将前端的静态页面统一放在了www目录下 let valuableQuery = querystring.parse(str) || queryObj; // 处理 post 和 get请求 console.log("str=",str) console.log("valuableQuery=",valuableQuery) if(pathname == "/user"){ switch(valuableQuery.action){ case "regist": if(users[valuableQuery.user]){ res.write('{"ok":false,msg:"用户名已存在"}') }else{ users[valuableQuery.user] = valuableQuery.psw; res.write('{"ok":true,"msg":"注册成功"}') } break; case "login": if(users[valuableQuery.user] == null){ res.write('{"ok":false,msg:"用户不存在"}') }else if( users[user] != valuableQuery.psw ){ res.write('{"ok":false,msg:"密码不正确"}') }else{ res.write('{"ok":false,msg:"登录成功"}') } break; default: console.log("user default!") break; } res.end(); // 告诉前端,返回信息结束了 }else{ fs.readFile(fileName,function(err,data){ if(err){ }else{ res.write(data); console.log("读取文件成功!") res.end();// 告诉前端,返回信息结束了 } }) } }) }).listen(8087)
Brief summary:
以上是用原生的nodejs 结合一些官方的模块写的一个简单的示例,希望对大家有帮助哦^_^。