首頁  >  文章  >  web前端  >  NodeJS學習筆記之Connect中間件應用實例_node.js

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

WBOY
WBOY原創
2016-05-16 16:17:421119瀏覽

一,開頭分析

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

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

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

二,需求分析

(1),使用者註冊,登入功能(沒有涉及很複雜的互動場景,註冊時會有使用者判斷是否已存在)。

(2),使用者登入成功,進入筆記管理系統的後台(筆記模組的增刪改查功能)。

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

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

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

(1),建立使用者登入頁面,程式碼如下:

複製程式碼 程式碼如下:



   
        Bigbear記事本應用登入
       
       
       

           

                使用者名稱:


                密  碼:
               
                我要註冊
            表格>
    身體>

效果圖:

(2),建立使用者註冊頁面,代碼如下:

複製程式碼程式碼如下:

 
 
    
         Bigbear記事本應用程式註冊
        
        
        

            

                 使用者名稱:


                 密  碼:


                
             表格>
     身體>
 

  效果圖:

(3),建立「Mongodb」連線程式碼,如下:

複製程式碼程式碼如下:

 var mongodb = require("mongodb") ;
 var server = new mongodb.Server("localhost",27017,{
     自動重新連線:true
 }) ;
 var conn = new mongodb.Db("bb",server,{
     安全:正確
 }) ;
 conn.open(函數(錯誤,db){
     if(error) 拋出錯誤;
     console.info("mongodb已連接!") ;
 }) ;
 導出 = module.exports = conn ;

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

複製程式碼程式碼如下:

 var conn = require("../conn") ;
 函數使用者(使用者){
     this.name = 使用者["name"] ;
     this.password = user["密碼"] ;
 } ;
 User.prototype.save = 函數(回呼){
     var that = this ;
     conn.collection("使用者",{
         安全:正確
     },函數(錯誤,集合){
         if(error) return conn.close() ;
         collection.findOne({   // 判斷此使用者是否存在
             名稱 : that.name
         },函數(錯誤,使用者){
             if(error) return conn.close() ;
             if(!user){
                 集合.插入({
                     姓名 : that.name "" ,
                     密碼 : that.password ""
                 },{
                     安全:正確
                 },函數(錯誤,且使用者){
                     if(error) return conn.close() ;
                     回調 && 回呼(使用者) ;
                     conn.close() ;
                 });       
             }
             其他{
                 callback("使用者已註冊!") ;
             }
         });
     }) ;
 } ;
 User.login = function(姓名,密碼,回呼){
     conn.collection("使用者",{
         安全:正確
     },函數(錯誤,集合){
         if(error) return conn.close() ;
         集合.findOne({
             姓名:姓名,
             密碼:密碼
         },函數(錯誤,使用者){
             if(error) return conn.close() ;
             回呼 && 回呼(使用者) ;
             conn.close() ;
         });
     }) ;
 } ;
 導出 = module.exports = 使用者 ;

效果圖:

(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(請求,回應,下一個){
     var name = request.body["name"] ;
     var 密碼 = request.body["密碼"] ;
     user.login(名稱,密碼,函數(使用者){
         若(使用者){
             response.end("歡迎來到:" 使用者["name"] " ^_^ ... ...") ;   
         }
         其他{
             response.end("使用者:"姓名"未註冊!")    ;
         }
     }) ;
 })
 .use("/reg",function(請求,回應,下一個){
     var name = request.body["name"] ;
     var 密碼 = request.body["密碼"] ;
     新用戶({
         姓名:姓名,
         密碼:密碼
     }).save(函數(使用者){
         if(使用者 && 使用者["姓名"]){
           response.end("使用者:" name "註冊完成!")    ;   
         }
         其他{
           response.end("使用者:" name "已註冊!") ; 
         }
     }) ;
 })
 .listen(8888,函數(){
     console.log("Web 伺服器在連接埠上執行 ---> 8888 。") ;
 }) ;

簡介:

(1)「connect.query()」-----處理「Get」請求參數解析。

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

(3)「connect.static(__dirname "/views"),connect.static(__dirname "/public")」

分別代表範本視圖「html」以及靜態資源如「js,css,jpg,gif」的資源目錄。

以下是該應用的目錄結構:

四,總結一下

(2),分割體系,如模型,景觀,路線。

(3),不斷最佳化和修改本文的範例(例如註冊驗證使用者是否存在,可以獨立出「UserManager」做一層代理程式完成使用者驗證和儲存的動作)。

(4),明天完成繼續後續的功能,盡請期待。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn