亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

NodeJS學習筆記之Connect中間件應用實例

2019-11-20 13:18:44
字體:
來源:轉載
供稿:網友

一,開篇分析

大家好哦,大熊君又來了,昨天因為有點個人的事沒有寫博客,今天又出來了一篇,這篇主要是寫一個記事本的小應用,前面的文章,

我也介紹過“Connect”中間件的使用以及“Mongodb”的用法,今天就結合這兩個中間件,寫個實際的例子,不斷完善和重構,已達到

充分學習的目的。好了,廢話不說了,直接進入主題。

二,需求分析

(1),用戶注冊,登錄功能(沒有涉及很復雜的交互場景,注冊時會有用戶判斷是否已存在)。

(2),用戶登錄成功,進入筆記管理系統的后臺(筆記模塊的增刪改查功能)。

(3),用戶可以具有簡單的權限劃分(管理員,注冊用戶)。

(4),界面比較簡單,以學習為主。

三,開始設計應用(第一部分)

(1),建立用戶登錄頁面,代碼如下:

復制代碼 代碼如下:

<!doctype html>
<html>
    <head>
        <title>Bigbear記事本應用登錄</title>
        <meta content="IE=8" http-equiv="X-UA-Compatible"/>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            .note-title {
                margin-bottom : 45px ;
                background : #6699cc ;
                font-size : 14px ;
                font-weight : bold ;
                color : #fff;
                font-family:arial ;
                height : 24px ;
                line-height : 24px ;
            }
            a {
                color : #336699;
                font-family:arial ;
                font-size : 14px ;
                font-weight : bold ;
            }
        </style>
        <script src="js/index.js"></script>
    </head>
    <body>
        <div class="note-title">Bigbear記事本應用登錄</div>
            <form action="/login" method="post">
                <span>用戶名:</span><input type="text" name="name" /><br/><br/>
                <span>密  碼:</span><input type="password" name="password" />
                <input type="submit" value="登錄" />
                <a href="reg.html">我要注冊</a>
            </form>
    </body>
</html>

  效果圖:

(2),建立用戶注冊頁面,代碼如下:

復制代碼 代碼如下:

 <!doctype html>
 <html>
     <head>
         <title>Bigbear記事本應用注冊</title>
         <meta content="IE=8" http-equiv="X-UA-Compatible"/>
         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         <style type="text/css">
             .note-title {
                 margin-bottom : 45px ;
                 background : #ff3300 ;
                 font-size : 14px ;
                 font-weight : bold ;
                 color : #fff;
                 font-family:arial ;
                 height : 24px ;
                 line-height : 24px ;
             }
         </style>
         <script src="js/index.js"></script>
     </head>
     <body>
         <div class="note-title">Bigbear記事本應用注冊</div>
             <form action="/reg" method="post">
                 <span>用戶名:</span><input type="text" name="name" /><br/><br/>
                 <span>密  碼:</span><input type="password" name="password" /><br/><br/>
                 <input type="submit" value="注冊" />
             </form>
     </body>
 </html>

  效果圖:

(3),建立“Mongodb”連接代碼,如下:

復制代碼 代碼如下:

 var mongodb = require("mongodb") ;
 var server = new mongodb.Server("localhost",27017,{
     auto_reconnect : true
 }) ;
 var conn = new mongodb.Db("bb",server,{
     safe : true
 }) ;
 conn.open(function(error,db){
     if(error) throw error ;
     console.info("mongodb connected !") ;
 }) ;
 exports = module.exports = conn ;

(4),建立模型實體類“User”,如下:

復制代碼 代碼如下:

 var conn = require("../conn") ;
 function User(user){
     this.name = user["name"] ;
     this.password = user["password"] ;
 } ;
 User.prototype.save = function(callback){
     var that = this ;
     conn.collection("users",{
         safe : true
     },function(error,collection){
         if(error) return conn.close() ;
         collection.findOne({   // 判斷此用戶是否存在
             name : that.name
         },function(error,user){
             if(error) return conn.close() ;
             if(!user){
                 collection.insert({
                     name : that.name + "" ,
                     password : that.password + ""
                 },{
                     safe : true
                 },function(error,user){
                     if(error) return conn.close() ;
                     callback && callback(user) ;
                     conn.close() ;
                 }) ;       
             }
             else{
                 callback("User has registed !") ;
             }
         }) ;
     }) ;
 } ;
 User.login = function(name,password,callback){
     conn.collection("users",{
         safe : true
     },function(error,collection){
         if(error) return conn.close() ;
         collection.findOne({
             name : name ,
             password : password
         },function(error,user){
             if(error) return conn.close() ;
             callback && callback(user) ;
             conn.close() ;
         }) ;
     }) ;
 } ;
 exports = module.exports = User ;

  效果圖:

(5),建立應用程序“app”,如下:

復制代碼 代碼如下:

 // app.js
 var connect = require("./lib/connect") ;
 var user = require("./models/user") ;
 var app = connect.createServer() ;
 app .use(connect.logger("dev"))
 .use(connect.query())
 .use(connect.bodyParser())
 .use(connect.cookieParser())
 .use(connect.static(__dirname + "/views"))
 .use(connect.static(__dirname + "/public"))
 .use("/login",function(request,response,next){
     var name = request.body["name"] ;
     var password = request.body["password"] ;
     user.login(name,password,function(user){
         if(user){
             response.end("Welcome to:" + user["name"] + " ^_^ ... ...") ;   
         }
         else{
             response.end("User:" + name + " Not Register !")    ;
         }
     }) ;
 })
 .use("/reg",function(request,response,next){
     var name = request.body["name"] ;
     var password = request.body["password"] ;
     new user({
         name : name ,
         password : password
     }).save(function(user){
         if(user && user["name"]){
           response.end("User:" + name + "Register Done !")    ;   
         }
         else{
           response.end("User: " + name + "has registed !") ; 
         }
     }) ;
 })
 .listen(8888,function(){
     console.log("Web Server Running On Port ---> 8888 .") ;
 }) ;

  說明一下:

   ?。?)“connect.query()”------處理“Get”請求參數解析。

    (2)“connect.bodyParser()”------處理“Post”請求參數解析。

   ?。?)“connect.static(__dirname + "/views"),connect.static(__dirname + "/public")”

     分別代表模板視圖“html”以及靜態資源如“js,css,jpg,gif”的資源目錄。

     以下是這個應用的目錄結構:

四,總結一下

 ?。?),掌握NodeJs操作數據庫的基本操作語句。

 ?。?),劃分層級,如模型,視圖,路由。

 ?。?),不斷優化和修改本文的例子(比如注冊驗證用戶是否存在,可以獨立出“UserManager”做一層代理完成用戶驗證和保存的動作)。

 ?。?),明天繼續完成后續的功能,盡請期待。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产色综合天天综合网| 欧美大人香蕉在线| 81精品国产乱码久久久久久| 最近2019年日本中文免费字幕| 91久久夜色精品国产网站| 欧美激情综合色| 精品国偷自产在线视频| 国产精品九九久久久久久久| 国产欧美日韩精品丝袜高跟鞋| 国产精品久久久久久久av大片| 亚洲欧美国产精品va在线观看| 日韩成人在线网站| 欧美寡妇偷汉性猛交| 插插插亚洲综合网| 久久亚洲一区二区三区四区五区高| 亚洲日本欧美中文幕| 久久久久久久久久久人体| 欧美精品在线极品| www.xxxx欧美| 亚洲www在线观看| 狠狠综合久久av一区二区小说| 亚洲精品视频网上网址在线观看| 久久久久久国产三级电影| 69av成年福利视频| 久久精品国产欧美亚洲人人爽| 欧美另类第一页| 97香蕉久久夜色精品国产| 日韩成人中文电影| 欧美精品在线播放| 国产精品自产拍在线观| 狠狠躁天天躁日日躁欧美| 欧美网站在线观看| 亚洲国产成人精品久久久国产成人一区| www.日韩免费| 深夜福利亚洲导航| 亚洲石原莉奈一区二区在线观看| 国产日韩欧美在线视频观看| 久久人人爽国产| 国产精品ⅴa在线观看h| 成人免费高清完整版在线观看| 亚洲免费一级电影| 亚洲激情成人网| 国产精品情侣自拍| 日韩精品免费在线视频观看| 久久国产精品久久精品| 亚洲国产成人精品一区二区| 亚洲女性裸体视频| 久久艹在线视频| 国产z一区二区三区| 国产成人涩涩涩视频在线观看| 久久久久久久久久久成人| 亚洲精品福利在线观看| www欧美日韩| 日本精品性网站在线观看| 亚洲精品短视频| 久久久久久999| 亚洲va码欧洲m码| 欧美性猛交xxxx乱大交| 亚洲一区久久久| 欧美视频精品一区| 欧美xxxx做受欧美| 日本韩国欧美精品大片卡二| 懂色aⅴ精品一区二区三区蜜月| 亚洲欧美精品一区| 一二美女精品欧洲| 91欧美激情另类亚洲| 日韩在线视频网| 欧美综合激情网| 久久国产精品影片| 欧美专区日韩视频| 国产精品久久久久一区二区| 国产精品视频中文字幕91| 亚洲一区二区三区成人在线视频精品| 日韩欧美国产黄色| 亚洲国产成人精品久久| 久久国产精品网站| 亚洲欧美成人精品| 国内精品视频在线| 91精品国产99久久久久久| 成人午夜激情免费视频| 日韩精品高清视频| 亚洲成色777777女色窝| 久久久久久亚洲精品不卡| 日韩av不卡在线| 欧美亚洲国产视频小说| 日韩美女写真福利在线观看| 搡老女人一区二区三区视频tv| 日韩高清免费在线| 欧美大成色www永久网站婷| 国产日本欧美在线观看| 国产精品高清免费在线观看| 青青草国产精品一区二区| 69**夜色精品国产69乱| 日韩精品黄色网| 青草热久免费精品视频| 亚洲欧美制服第一页| 欧美美最猛性xxxxxx| 91精品久久久久久久久青青| 欧美多人乱p欧美4p久久| 一区二区三区精品99久久| 538国产精品视频一区二区| 国产亚洲视频中文字幕视频| 欧美一乱一性一交一视频| 国产脚交av在线一区二区| 中文字幕综合在线| 国产精品jizz在线观看麻豆| 欧美大尺度激情区在线播放| 日韩人在线观看| 亚洲日本中文字幕免费在线不卡| 亚洲欧美国内爽妇网| 亚洲aa中文字幕| 精品国产一区二区三区久久| 欧美乱妇高清无乱码| 日韩一中文字幕| 日韩av在线天堂网| 日韩av在线资源| 国产综合在线看| 日本高清不卡在线| 欧美视频专区一二在线观看| 欧美成人精品在线观看| 国产精品久久久久久久app| 国产精品久久久久久久久久久久| 96精品久久久久中文字幕| 精品国产31久久久久久| 国产精品视频在线播放| 国产日韩欧美91| 欧美大片网站在线观看| 亚洲欧洲一区二区三区在线观看| 欧美成人在线免费视频| 国产一区二区丝袜| 国产精品女视频| 久久夜色精品亚洲噜噜国产mv| 欧美老妇交乱视频| 亚洲天堂男人天堂| 伦伦影院午夜日韩欧美限制| 欧洲美女免费图片一区| 狠狠久久亚洲欧美专区| 欧美电影院免费观看| 丝袜亚洲欧美日韩综合| 秋霞成人午夜鲁丝一区二区三区| 成人精品久久一区二区三区| 精品美女国产在线| 久久全国免费视频| 亚洲嫩模很污视频| 欧美激情精品久久久久| 亚洲在线视频观看| 91色视频在线观看| 亚洲视频一区二区| 亚洲毛片在线观看.| 欧美日韩中文字幕在线| 精品久久久久久久久中文字幕| 欧美小视频在线| 国产激情视频一区| 91精品国产99久久久久久| 精品久久中文字幕久久av| 伊人成人开心激情综合网| 国产精品久久久久久久久久| 国产精品久久精品| 日韩精品久久久久| 国产成人黄色av| 国产一区二区三区毛片| 欧美中文字幕第一页| 91久久精品国产| 欧美裸体xxxx极品少妇|