最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js利用Express實(shí)現(xiàn)用戶注冊(cè)登陸功能(推薦)

 更新時(shí)間:2020年10月26日 10:20:33   作者:蝸牛烏龜誰跑的快  
這篇文章主要介紹了Node.js利用Express實(shí)現(xiàn)用戶注冊(cè)登陸功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

要求

  • 了解Express框架
  • 了解node.js常用模塊:express,body-parser,mysql
  • 了解express Router
  • 了解HTML form表單
  • 了解MySQL Server 及安裝使用
  • 了解SQLyog使用

環(huán)境

  • OS: Win10
  • Node.js: v12.19.0
  • Express: v4.17.1
  • Yarn: v1.22.10
  • 使用VScode IDE
  • body-parser:1.19.0
  • mysql: 2.18.1
  • MySQL Server:5.7
  • SQLyog:V12.9

準(zhǔn)備

首先在Win10上安裝Mysql,一路Next就行。安裝完成使用SQLyog連接MySQL Server。連接成功需要?jiǎng)?chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表

Schema:

CREATE TABLE user (
username char(20) NOT NULL,
password char(20) NOT NULL,
email char(30) DEFAULT NULL,
address char(20) DEFAULT NULL,
phonenumber char(20) DEFAULT NULL,
logintime int(20) DEFAULT NULL,
id int(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id),
KEY username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

實(shí)戰(zhàn)

前端

3個(gè)page, login.html, register.html.

index.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
			<title>登陸注冊(cè)</title>
			<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
		</head>
		<body>
			<a href="./register.html" rel="external nofollow" >注冊(cè)</a>
			<a href="./login.html" rel="external nofollow" >登錄</a>
		</body>
	</head>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
			<title>登陸注冊(cè)</title>
			<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
		</head>
		<body>
			<form action="/login" method="GET" >  
				<label for="">賬號(hào):</label> 
				<input name="user" type="text" placeholder="請(qǐng)輸入賬號(hào)"> 
				<br> 
				<label for="">密碼:</label> 
				<input type="password" name="password" placeholder="請(qǐng)輸入密碼"> 
				<br>
				<input type="submit" value="登錄">
			</form>
		</body>
	</head>
</html>

register.html

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
			<title>登陸注冊(cè)</title>
			<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" />
		</head>
		<body>
			<form action="/register" method="POST">
				<label for="">賬號(hào):</label> 
				<input name="user" type="text" placeholder="請(qǐng)輸入賬號(hào)">
				<br> 
				<label for="">密碼:</label> 
				<input name="psw" type="password" placeholder="請(qǐng)輸入密碼"> 
				<br> 
				<label for="">重復(fù)密碼:</label> 
				<input name="pswa" type="password" placeholder="請(qǐng)重復(fù)密碼"> 
				<br> 
				<input type="submit" value="注冊(cè)">
			</form>
		</body>
	</head>
</html>

后端 server.js

var express = require("express");
var bodyParser = require("body-parser");
var router = require("./routers");

var app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.use('/', router);

module.exports = app;

Router

router/index.js, 調(diào)用封裝好的數(shù)據(jù)庫接口:queryUer, addUser

const express=require("express");
const dao = require("../dao/db");

const router=express.Router();

router.get("/login", function(req,res){
 console.dir(req.query);
 try{
  dao.queryUser({username:req.query.user},function(err,record){
   if(err){
    console.log(err);
    throw error;
   }
   console.log(record);
   if(record && record.password == req.query.password){
    res.send(`${req.query.user}:登陸成功`);
   }else{
    res.send(`${req.query.user}:登陸失敗,檢查登陸信息是否正確`);
   }
  });
 } catch(error){
  console.log(error);
  res.send(`${req.body.user}: 登陸失敗`);
 } 
})

router.post("/register", function(req,res){
 console.dir(req.body); 
 try{
  if(req.body.psw == req.body.pswa){
   dao.addUser({username:req.body.user,password:req.body.psw});
   res.send(`${req.body.user}: 注冊(cè)成功`);
  } else {
   console.log(error);
   res.send(`${req.body.user}: 注冊(cè)失敗:,檢查登陸信息是否正確`);
  }  
 } catch(error){
  console.log(error);
  res.send(`${req.body.user}: 注冊(cè)失敗`);
 }
 
})
module.exports = router;

數(shù)據(jù)庫接口db.js

dao/db.js

var mysqlClient= require("./mysql");

function addUser (userInfo,callabck){
 console.log("addUser:"+ userInfo);
 var sql= `insert into user(username,password) values('${userInfo.username}','${userInfo.password}')`;
 console.log("sql:"+ sql);
 mysqlClient(sql,function(err,rows){
  if(err){
   console.log("err:"+err);
   callabck(err,null);
  } else{
   console.log("addUser result:");
   console.log(rows);
   callabck(null,rows);
  }
 })
}

function queryUser (userInfo,callabck){
 console.log("queryUser:"+ userInfo);
 var sql= `select * from user where username='${userInfo.username}'`;
 console.log("sql:"+ sql);
 mysqlClient(sql, function(err,rows){
  if(err){
   console.log("err:"+err);
   callabck(err,null);
  } else{   
   rows && rows.length>0 ? callabck(null,rows[0]): callabck(null,null);
  }
 })
}
exports.addUser = addUser;
exports.queryUser = queryUser;

dao/mysql.js

const mysql = require("mysql");
const pool = mysql.createPool({
 host:"localhost",
 user:"root",
 password:"*****",
 database:"test"
});

function query(sql,callback){
 pool.getConnection(function(err,connection){
  if(err){
   callback(err,null);
   return
  }
  connection.query(sql, function (err,rows) {   
   callback(err,rows);
   connection.release();
  });
 });
}

module.exports = query;

mysql module

yarn add mysql

運(yùn)行index.js

cd src/ && node index.js

結(jié)果及演示

瀏覽器看效果及整個(gè)過程。
在這里插入圖片描述

到此這篇關(guān)于Node.js利用Express實(shí)現(xiàn)用戶注冊(cè)登陸功能的文章就介紹到這了,更多相關(guān)Node.js用戶注冊(cè)登陸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Node.js使用Playwright自動(dòng)化測(cè)試頁面性能

    Node.js使用Playwright自動(dòng)化測(cè)試頁面性能

    對(duì)于現(xiàn)在的網(wǎng)站而言,性能的重要性不言而喻,本文將使用Playwright自動(dòng)化測(cè)試頁面性能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • 基于node實(shí)現(xiàn)websocket協(xié)議

    基于node實(shí)現(xiàn)websocket協(xié)議

    這篇文章主要介紹了基于node實(shí)現(xiàn)websocket協(xié)議的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Node.js的路由、EJS模板引擎、GET和POST請(qǐng)求講解

    Node.js的路由、EJS模板引擎、GET和POST請(qǐng)求講解

    這篇文章介紹了Node.js的路由、EJS模板引擎、GET和POST請(qǐng)求,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Nodejs中使用captchapng模塊生成圖片驗(yàn)證碼

    Nodejs中使用captchapng模塊生成圖片驗(yàn)證碼

    本篇文章主要介紹了Nodejs中使用captchapng模塊實(shí)現(xiàn)圖片驗(yàn)證碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • 一文詳解package.json配置

    一文詳解package.json配置

    這篇文章主要為大家介紹了一文詳解package.json配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • node.js利用express自動(dòng)搭建項(xiàng)目的全過程

    node.js利用express自動(dòng)搭建項(xiàng)目的全過程

    這篇文章主要給大家介紹了關(guān)于node.js利用express自動(dòng)搭建項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Express 框架中使用 EJS 模板引擎并結(jié)合 silly-datetime 庫進(jìn)行日期格式化的實(shí)現(xiàn)方法

    Express 框架中使用 EJS 模板引擎并結(jié)合 silly-datetime

    這篇文章主要介紹了Express 框架中使用 EJS 模板引擎并結(jié)合 silly-datetime 庫進(jìn)行日期格式化的實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式分析了express框架引入EJS模版以及導(dǎo)入 silly-datetime 庫的格式化方法傳遞給EJS模版使用的相關(guān)操作技巧,需要的朋友可以參考下
    2023-05-05
  • nvm的下載,安裝與使用方法圖文詳解

    nvm的下載,安裝與使用方法圖文詳解

    這篇文章主要介紹了nvm的下載,安裝與使用方法,詳細(xì)介紹了nvm的功能、下載與安裝方法,常見命令以及相關(guān)問題解決方法,需要的朋友可以參考下
    2023-04-04
  • Node.js中對(duì)通用模塊的封裝方法

    Node.js中對(duì)通用模塊的封裝方法

    這篇文章主要介紹了Node.js中對(duì)通用模塊的封裝方法,封裝方法參考了Underscore.js的實(shí)現(xiàn),需要的朋友可以參考下
    2014-06-06
  • node連接MongoDB數(shù)據(jù)庫錯(cuò)誤:MongoServerSelectionError:?connect?ECONNREFUSED?::1:27017(解決方案)

    node連接MongoDB數(shù)據(jù)庫錯(cuò)誤:MongoServerSelectionError:?connect?ECON

    使用node連接MongoDB數(shù)據(jù)庫時(shí)發(fā)生報(bào)錯(cuò),MongoServerSelectionError:?connect?ECONNREFUSED?::1:27017,本文給大家分享原因分析及解決方案,感興趣的朋友跟隨小編一起看看吧
    2023-04-04

最新評(píng)論

合江县| 白朗县| 都匀市| 嘉黎县| 潍坊市| 华亭县| 桃源县| 女性| 平武县| 南川市| 宁明县| 德庆县| 左权县| 天峨县| 濮阳县| 蕉岭县| 西峡县| 孟津县| 宁乡县| 明溪县| 眉山市| 岳阳县| 佳木斯市| 明星| 河源市| 敦化市| 象州县| 西盟| 安吉县| 遂宁市| 务川| 英德市| 友谊县| 长白| 海阳市| 铜山县| 福海县| 南宫市| 高碑店市| 西盟| 三亚市|