首页 > 代码库 > nodejs基础运用——模拟注册登陆

nodejs基础运用——模拟注册登陆

正如维基百科 所说:“Node.js 是谷歌 V8 引擎、libuv平台抽象层 以及主体使用 Javscript 编写的核心库三者集合的一个包装外壳。” 除此之外,值得注意的是,Node.js 的作者瑞恩·达尔 (Ryan Dahl) 的目标是创建具有实时推送能力的网站。在 Node.js 中,他给了开发者一个使用事件驱动来实现异步开发的优秀解决方案。

今天就来分享一个基础的nodejs运用----------模拟注册登陆。现在都是用的第三方,几乎没人用原生的来自己写。不过如果你是初学者,还是可以看看的。希望大神门勿喷小女子哈!!!

首先,您需要建立一个文件,在文件下建一个html文件夹,json文件,如图,以下代码中用到的文件都在图中。

技术分享

此外,json数据格式如下:

技术分享

直接在命令台,进入你的index.js使用命令node index.js 来在浏览器展示。提示使用你自己的域名+端口号

 

 好了,直接上的代码吧

//创建服务器
var http=require(‘http‘);

var fs=require(‘fs‘);
var url=require(‘url‘);
var querystring=require(‘querystring‘);

var server=http.createServer(handle).listen(3000);
function handle(req,res){
var filePath=‘‘;
//显示的页面
if (req.url=="/"){
filePath=‘./html/index.html‘;
fs.exists(filePath,function(exists){
if (exists){
fs.readFile(filePath,function(err,data){
if (err){return}
res.end(data);
})
}else{
send404(res)
}
})
}
//通过req.method判断用户是否注册和登陆
// get 判断用户是否注册过 post 没有注册的注册,并保存响应数据到数据json表中
else if(req.url.indexOf(‘/from‘)!=-1){
if (req.method==‘GET‘){
// console.log(req.url) ///from?username=14545&password=4546536636
// .解析url,返回一个json格式的数组 url.parse(‘http://www.baidu.com?page=1’,true);
var parme=url.parse(req.url,true);
// console.log(parme)
// {
// protocol: null,
// slashes: null,
// auth: null,
// host: null,
// port: null,
// hostname: null,
// hash: null,
// search: ‘?username=14545&password=4546536636‘,
// query: { username: ‘14545‘, password: ‘4546536636‘ },
// pathname: ‘/from‘,
// path: ‘/from?username=14545&password=4546536636‘,
// href: ‘/from?username=14545&password=4546536636‘ }
var info=parme.query;
// 拿到用户输入的信息,与数据库对比
var username=info.username;
var password=info.password;
fs.readFile(‘./tsconfig.json‘,‘utf-8‘,function(err,data){
if (err){
return;
}
// console.log(data)
// {
// "success":‘1‘,
// "data": [
// {"username":"wj",
// "pasword":"123456"
// }
// ]
// }
// 数据转化
var data=http://www.mamicode.com/JSON.parse(data);
// console.log(data)
// { success: ‘1‘,
// data: [ { username: ‘wj‘, pasword: ‘123456‘ } ] }
var message=data.data;
for(var i=0;i<message.length;i++){
if (message[i].username==username&&message[i].password==password){
// 有此账户,可直接登录
filePath=‘./html/login.html‘;
break;
}else{
// 没有此账户,需要注册
filePath=‘./html/reg.html‘
}
}

fs.exists(filePath,function(exists){
if (exists){
fs.readFile(filePath,function(err,data){
if (err){return}
res.end(data);
})
}else{
send404(res)
}
})


})
}
// POST传输数据
else if(req.method==‘POST‘){
var postData=http://www.mamicode.com/‘‘;
filePath=‘./html/index.html‘;
req.on(‘data‘,function(chunk){
postData+=chunk;
// console.log(postData)
})
req.on(‘end‘,function(){
var data=http://www.mamicode.com/querystring.parse(postData);
var obj={};
obj.username=data.username;
obj.password=data.password;
fs.readFile(‘./tsconfig.json‘,‘utf-8‘,function(err,data){
if (err){
return;
}
var data=http://www.mamicode.com/JSON.parse(data);
data.data.push(obj)
fs.writeFile(‘./tsconfig.json‘,JSON.stringify(data),function(){
})
})
})

fs.exists(filePath,function(exists){
if (exists){
fs.readFile(filePath,function(err,data){
if (err){return}
res.end(data);
})
}else{
send404(res)
}
})
}
}
//显示的页面
else{
filePath=‘.‘+req.url;
// console.log(req.url);
// console.log(filePath);
fs.exists(filePath,function(exists){
if (exists){
fs.readFile(filePath,function(err,data){
if (err){return}
res.end(data);
})
}else{
send404(res)
}
})

}
}

//整过过程都是异步的,所以判断文件的函数需要写在内部
function send404(res){
fs.readFile(‘./html/404.html‘,function(err,data){
if (err){return}
res.end(data)
})
}

nodejs基础运用——模拟注册登陆