nodejs基礎運用——模擬註冊登錄

正如維基百科 所說:「Node.js 是谷歌 V8 引擎、libuv平臺抽象層 以及主體使用 Javscript 編寫的核心庫三者集合的一個包裝外殼。」 除此以外,值得注意的是,Node.js 的做者瑞恩·達爾 (Ryan Dahl) 的目標是建立具備實時推送能力的網站。在 Node.js 中,他給了開發者一個使用事件驅動來實現異步開發的優秀解決方案。html

今天就來分享一個基礎的nodejs運用----------模擬註冊登錄。如今都是用的第三方,幾乎沒人用原生的來本身寫。不過若是你是初學者,仍是能夠看看的。但願大神門勿噴小女子哈!!!node

首先,您須要創建一個文件,在文件下建一個html文件夾,json文件,如圖,如下代碼中用到的文件都在圖中。數據庫

此外,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=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='';                filePath='./html/index.html';                req.on('data',function(chunk){                        postData+=chunk;                    // console.log(postData)                })                req.on('end',function(){                        var data=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=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)    })}
相關文章
相關標籤/搜索