1.原生node.js的综合示例

版权声明:所有原创文章未经本人同意不得随意转载,谢谢 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 结合一些官方的模块写的一个简单的示例,希望对大家有帮助哦^_^。

猜你喜欢

转载自blog.csdn.net/tangcc110/article/details/82968152
今日推荐