node.js学习之简易httpserver的搭建

先说一下这个简易服务器所能实现的功能:

实现一个简单的用户登录、注册。

直接上图:

1.(没有注册之前点击登录的效果)


2.(点击注册时的截图如下)


3.(输入正确的用户名密码,点击登录时的界面)


4.(输入错误的密码,点击登录):


以下是服务器的具体代码:

//先是请求了node的 http、fs、url、querystring模块
const http = require("http");  
const fs = require('fs');
const urlLib = require('url');
const querysting = require('querystring');
var users = {};   //users是用来接收json文件的变量 例如{"liming":"123456","zhangsan":"123456"...}
http.createServer(function(req, res) {

  var obj = urlLib.parse(req.url, true);
  var url = obj.pathname;
  const GET = obj.query;
  //解析数据
  var str = '';  //用来存data
  req.on('data', function(data) {
    str += data;
  });
  req.on('end', function() {
    const POST = querysting.parse(str);

    console.log(url, GET, POST);

    //区分--接口、文件
    if (url == '/user') { //接口
      switch (GET.act) {  //检测到有2个事件:reg为注册事件,login为登录事件
        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':

          if (users[GET.user] == null) {
            //1.检查用户是否存在
            res.write('{"ok":false,"msg":"此用户不存在"}')
          } else if (users[GET.user] != GET.pass) {
            //2.检查用户密码
            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;
      fs.readFile(file_name, function(err, data) {
        if (err) {
          res.write('404');

        } else {
          res.write(data);
        }
        res.end();
      });
    }
  });
}).listen(8081);

以上是server.js文件  ,至于html文件就是开头的登录按钮和注册按钮分别加了点击事件,期间用了ajax框架。

ok就先到这里吧!刚刚开始写,就当笔记用了!



猜你喜欢

转载自blog.csdn.net/qq_40876689/article/details/80455641
今日推荐