欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node.js實(shí)現(xiàn)登錄注冊(cè)頁(yè)面

 更新時(shí)間:2022年04月26日 14:56:39   作者:bestjarvan  
這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了node.js登錄注冊(cè)頁(yè)面展示的具體代碼,供大家參考,具體內(nèi)容如下

首先需要新建四個(gè)文件

一個(gè)服務(wù)器js

一個(gè)保存數(shù)據(jù)的txt

一個(gè)登陸、一個(gè)注冊(cè)頁(yè)面html

1、注冊(cè)頁(yè)面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>regist</title>
</head>
<body>
  <div>
    <label for="user">用戶名</label><input type="text" id="user">
  </div>
  <div>
    <label for="password">密   碼</label><input type="password" id="password">
  </div>
  <div>
    <button id="register">注冊(cè)</button>
  </div>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
  $(function () {
    $("#register").click(function () {
      $.ajax({
        url:"http://localhost:3000/register",
        type:"POST",
        data:{
          username:$("#user").val(),
          password:$("#password").val()
        },
        success:function (res) {
          alert(res);
        },
        error:function (err) {
          console.log(err);
        }
      })
    })
  });
</script>
</html>

2、登錄界面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>login</title>
</head>
<body>
  <div>
    <label for="user">用戶名</label><input type="text" id="user">
  </div>
  <div>
    <label for="password">密&nbsp;&nbsp;&nbsp;碼</label><input type="password" id="password">
  </div>
  <div>
    <button id="login">登錄</button>
    <button id="register"><a href="regist.html">注冊(cè)</a></button>
  </div>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script>
  $(function () {
    $("#login").click(function () {
      if ($("#user").val().length == 0){
        return alert("請(qǐng)輸入內(nèi)容!");
      }
      if ($("#password").val().length == 0){
        return alert("請(qǐng)輸入密碼!");
      }

      $.ajax({
        url:"http://localhost:3000/login",
        type:"POST",
        data:{
          username:$("#user").val(),
          password:$("#password").val()
        },
        success:function (res) {
          alert("登錄成功!")
        },
        error:function (err) {
          console.log(err);
        }
      })

    })
  });
</script>
</html>

3、搭建服務(wù)器

var http = require("http");
var url = require("url");
var qs = require("querystring");
var fs = require("fs");

http.createServer(function (req , res) {
//設(shè)置請(qǐng)求頭
  res.setHeader("Access-Control-Allow-Origin","*");
  if(req.method == "POST"){
    //接收發(fā)來(lái)的用戶名和密碼
    var result = "";
//獲取前端代碼發(fā)來(lái)的路由地址
    var pathName = url.parse(req.url).pathname;
    req.addListener("data",function (chunk) {
      result += chunk;
    });

    req.on("end" , function () {
      var user = qs.parse(result);
      //判斷用戶是否存在
      if(user.username){
        fs.readFile("db.txt" , "utf-8" , function (err,data) {
          if (!err){
            console.log("讀取文件成功");
            if (!data){
              if(pathName == "/login"){
                res.end("該用戶不存在");
                return;
              }
//根據(jù)前端發(fā)來(lái)的路由地址判斷是登錄還是注冊(cè)頁(yè)面,如果是注冊(cè)頁(yè)面
              if(pathName == "/register"){
//創(chuàng)建一個(gè)數(shù)組一個(gè)對(duì)象來(lái)保存帳號(hào)和密碼
                var arr = [];
                var obj = {};
//把用戶的帳號(hào)密碼保存
                obj.username = user.username;
                obj.password = user.password;
                arr.push(obj);
//同步寫(xiě)入db.txt文件,必須是同步進(jìn)行
                fs.writeFileSync("db.txt" , JSON.stringify(arr) , "utf-8");
                res.end("注冊(cè)成功!");
                return;
              }
            }else {
              console.log("文件中有數(shù)據(jù)");
//把數(shù)據(jù)轉(zhuǎn)成JSON對(duì)象,以便我們使用
              var arr = JSON.parse(data);
//遍歷整個(gè)保存數(shù)據(jù)的數(shù)組 判斷登錄注冊(cè)
              for(var i = 0;i < arr.length;i++){
                var obj = arr[i];
                if(obj.username == user.username){
                  if(pathName == "/login"){
                    if (obj.password == user.password){
                      res.end("登錄成功!");
                      return;
                    }else {
                      res.end("密碼錯(cuò)誤!");
                      return;
                    }
                  }
                  if(pathName == "/register"){
                    res.end("該用戶已存在!");
                    return;
                  }
                }
              }
              if(pathName == "/login"){
                res.end("用戶名不存在!");
                return;
              }
              if(pathName == "/register"){
//創(chuàng)建新對(duì)象寫(xiě)入數(shù)據(jù)
                var obj = {};
                obj.username = user.username;
                obj.password = user.password;
                arr.push(obj);
                fs.writeFileSync("db.txt" , JSON.stringify(arr) , "utf-8");
                res.end("注冊(cè)成功!");
                return;
              }
            }
          }else {
            console.log("讀取文件失敗");
          }
        })
      }
    });
  }else {
    res.end("get請(qǐng)求");
  }
}).listen(3000 , function (err) {
  if (!err){
    console.log("服務(wù)器啟動(dòng)成功,正在監(jiān)聽(tīng)port3000...");
  }
});

4、在db.txt文件中可以查看注冊(cè)信息

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • TypeScript開(kāi)發(fā)Node.js程序的方法

    TypeScript開(kāi)發(fā)Node.js程序的方法

    這篇文章主要介紹了TypeScript開(kāi)發(fā)Node.js程序的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • node 使用 async 控制并發(fā)的方法

    node 使用 async 控制并發(fā)的方法

    這篇文章主要介紹了node 使用 async 控制并發(fā)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • node-sass@4.14.1報(bào)錯(cuò)的最終解決方案分享

    node-sass@4.14.1報(bào)錯(cuò)的最終解決方案分享

    最近在安裝node-sass@4.14.1的時(shí)候遇到了些問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于node-sass@4.14.1報(bào)錯(cuò)的最終解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 一文帶你了解前端包管理工具npm、yarn和pnpm

    一文帶你了解前端包管理工具npm、yarn和pnpm

    如果您是前端開(kāi)發(fā)人員,您將接觸到一些包管理工具,包管理工具是連續(xù)自動(dòng)化程序的集合,例如安裝、升級(jí)、配置和刪除程序,下面這篇文章主要給大家介紹了關(guān)于前端包管理工具npm、yarn和pnpm的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • NodeJs環(huán)境安裝與配置的實(shí)現(xiàn)步驟

    NodeJs環(huán)境安裝與配置的實(shí)現(xiàn)步驟

    本文主要介紹了NodeJs環(huán)境安裝與配置,包括配置環(huán)境和配置國(guó)內(nèi)鏡像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • windows使用nvm對(duì)node進(jìn)行版本管理切換的完整步驟

    windows使用nvm對(duì)node進(jìn)行版本管理切換的完整步驟

    這篇文章主要介紹了windows使用nvm對(duì)node進(jìn)行版本管理切換的完整步驟,在使用之前各位務(wù)必卸載掉自己安裝過(guò)的nvm或者node版本包括環(huán)境變量之類的,要保證自己的電腦完全沒(méi)有node環(huán)境,需要的朋友可以參考下
    2024-03-03
  • node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋

    node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋

    這篇文章主要介紹了node.js利用socket.io實(shí)現(xiàn)多人在線匹配聯(lián)機(jī)五子棋的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • Node.js API詳解之 querystring用法實(shí)例分析

    Node.js API詳解之 querystring用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 querystring用法,結(jié)合實(shí)例形式分析了Node.js API中querystring的基本功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享

    Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享

    這篇文章主要介紹了Nodejs實(shí)現(xiàn)多人同時(shí)在線移動(dòng)鼠標(biāo)的小游戲分享,本文給出了服務(wù)器端和客戶端代碼以及運(yùn)行方法,需要的朋友可以參考下
    2014-12-12
  • nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例

    nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例

    這篇文章主要介紹了nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法,通過(guò)兩個(gè)具體案例形式分析了node.js同步刪除文件/文件夾,以及異步刪除文件/文件夾的相關(guān)實(shí)現(xiàn)技巧,涉及遞歸遍歷與文件判斷、回調(diào)等相關(guān)操作,需要的朋友可以參考下
    2023-04-04

最新評(píng)論