05.nodeJS搭建服务器Demo

nodeJS搭建服务器Demo

目录结构

· ├─ server.js

· ├─ www

· │ └─ index.html

· │ └─ ajax.js

1.创建index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="ajax.js" charset="utf-8"></script>
    <script type="text/javascript">
      window.onload=function (){
        var oTxtUser=document.getElementById('user');
        var oTxtPass=document.getElementById('pass');
        var oBtnReg=document.getElementById('reg_btn');
        var oBtnLogin=document.getElementById('login_btn');

        oBtnLogin.onclick=function (){
          ajax({
            url: '/user',
            data: {act: 'login', user: oTxtUser.value, pass: oTxtPass.value},
            type: 'get',
            success: function (str){
              var json=eval('('+str+')');

              if(json.ok){
                alert('登录成功');
              }else{
                alert('登录失败:'+json.msg);
              }
            },
            error: function (){
              alert('通信错误');
            }
          });
        };

        oBtnReg.onclick=function (){
          ajax({
            url: '/user',
            data: {act: 'reg', user: oTxtUser.value, pass: oTxtPass.value},
            type: 'get',
            success: function (str){
              var json=eval('('+str+')');

              if(json.ok){
                alert('注册成功');
              }else{
                alert('注册失败:'+json.msg);
              }
            },
            error: function (){
              alert('通信错误');
            }
          });
        };
      };
    </script>
  </head>
  <body>
    用户:<input type="text" id="user"><br>
    密码:<input type="password" id="pass"><br>
    <input type="button" value="注册" id="reg_btn">
    <input type="button" value="登录" id="login_btn">
  </body>
</html>

2.创建ajax.js

function json2url(json){
    var arr=[];
    for(var name in json){
        arr.push(name+'='+json[name]);
    }
    return arr.join('&');
}

function ajax(json){
    json=json || {};
    if(!json.url)return;
    json.data=json.data || {};
    json.type=json.type || 'get';

    var timer=null;

    if(window.XMLHttpRequest){
        var oAjax=new XMLHttpRequest();
    }else{
        var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
    }

    switch(json.type){
        case 'get':
            oAjax.open('GET',json.url+'?'+json2url(json.data),true);
            oAjax.send();
            break;
        case 'post':
            oAjax.open('POST',json.url,true);
            oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            oAjax.send(json2url(json.data));
            break;
    }

    oAjax.onreadystatechange=function(){
        if(oAjax.readyState==4){
            clearTimeout(timer);
            if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){
                json.success && json.success(oAjax.responseText);
            }else{
                json.error && json.error(oAjax.status);
            }
        }
    };
}

3.创建server.js

const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const urlLib = require('url');

var users = {}; //{"blue": "123456", "zhangsan": "123456", "lisi": "321321"}

var server = http.createServer(function (req, res) {
    //解析数据
    var str = '';
    req.on('data', function (data) {
        str += data;
    });
    req.on('end', function () {
        var obj = urlLib.parse(req.url, true);

        const url = obj.pathname;
        const GET = obj.query;
        const POST = querystring.parse(str);

        //区分——接口、文件
        if (url == '/user') { //接口
            switch (GET.act) {
                case 'reg':
                    //1.检查用户名是否已经有了
                    if (users[GET.user]) {
                        res.write('{"ok": false, "msg": "此用户已存在"}');
                    } else {
                        //2.插入users
                        users[GET.user] = GET.pass;
                        res.write('{"ok": true, "msg": "注册成功"}');
                    }
                    break;
                case 'login':
                    //1.检查用户是否存在
                    if (users[GET.user] == null) {
                        res.write('{"ok": false, "msg": "此用户不存在"}');
                        //2.检查用户密码
                    } else if (users[GET.user] != GET.pass) {
                        res.write('{"ok": false, "msg": "用户名或密码有误"}');
                    } else {
                        res.write('{"ok": true, "msg": "登录成功"}');
                    }
                    break;
                default:
                    res.write('{"ok": false, "msg": "未知的act"}');
            }
            res.end();
        } else { //文件
            //读取文件
            var file_name = './www' + url;
            console.log(file_name);
            fs.readFile(file_name, function (err, data) {
                if (err) {
                    console.log(err)
                    res.write('404');
                } else {
                    res.write(data);
                }
                res.end();
            });
        }
    });
});
server.listen(8080,function(){
    console.log("The server is running!")
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值