Heim  >  Artikel  >  Web-Frontend  >  NodeJS-Studiennotizen – Verbinden Sie die Middleware-Anwendung example_node.js

NodeJS-Studiennotizen – Verbinden Sie die Middleware-Anwendung example_node.js

WBOY
WBOYOriginal
2016-05-16 16:17:421119Durchsuche

1, Eröffnungsanalyse

Hallo zusammen, Herr Big Bear ist gestern aus persönlichen Gründen nicht da. Heute geht es in diesem Artikel hauptsächlich um das Schreiben einer kleinen Notizblockanwendung 🎜>

Ich habe auch die Verwendung von „Connect“-Middleware und die Verwendung von „Mongodb“ eingeführt. Heute werde ich diese beiden Middlewares kombinieren und ein praktisches Beispiel schreiben, um sie weiter zu verbessern und zu rekonstruieren

Voller Lernzweck. Okay, hören wir auf, Unsinn zu reden, und gehen wir direkt zum Thema über.

2. Bedarfsanalyse

(1), Benutzerregistrierungs- und Anmeldefunktionen (keine komplexen Interaktionsszenarien erforderlich, der Benutzer stellt bei der Registrierung fest, ob diese bereits vorhanden sind).

(2), der Benutzer meldet sich erfolgreich an und gelangt in den Hintergrund des Notizverwaltungssystems (Funktionen zum Hinzufügen, Löschen, Ändern und Überprüfen des Notizmoduls).

(3), Benutzer können eine einfache Berechtigungsaufteilung haben (Administrator, registrierter Benutzer).

(4) Die Benutzeroberfläche ist relativ einfach und konzentriert sich auf das Lernen.

3. Beginnen Sie mit dem Entwerfen der Anwendung (Teil 1)

(1), erstellen Sie eine Benutzeranmeldeseite. Der Code lautet wie folgt:

Code kopieren Der Code lautet wie folgt:



   
        Bigbear记事本应用登录
       
       
       
       
   
   
       
Bigbear记事本应用登录

           

                用户名:


                密  码:
               
                我要注册
           

   

  效果图:

(2),建立用户注册页面,代码如下:

复制代码 代码如下:

 
 
    
         Bigbear记事本应用注册
        
        
        
        
    
    
        
Bigbear记事本应用注册

            

                 用户名:


                 密  码:


                
            

    
 

  效果图:

(3),建立„Mongodb“连接代码,如下:

复制代码 代码如下:

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

(4),建立模型实体类„Benutzer“,如下:

复制代码 代码如下:

 var conn = require("../conn") ;
 Funktion Benutzer(Benutzer){
     this.name = user["name"] ;
     this.password = user["password"] ;
 } ;
 User.prototype.save = function(callback){
     var that = this ;
     conn.collection("users",{
         sicher: wahr
     },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 "",
                     Passwort: that.password „“
                 },{
                     sicher: wahr
                 },function(error,user){
                     if(error) return conn.close() ;
                     Rückruf && Rückruf(Benutzer) ;
                     conn.close() ;
                 }) ;       
             }
             sonst{
                 callback("Benutzer hat sich registriert!") ;
             }
         }) ;
     }) ;
 } ;
 User.login = function(name,password,callback){
     conn.collection("users",{
         sicher: wahr
     },function(error,collection){
         if(error) return conn.close() ;
         Collection.findOne({
             Name: Name,
             Passwort: Passwort
         },function(error,user){
             if(error) return conn.close() ;
             Rückruf && Rückruf(Benutzer) ;
             conn.close() ;
         }) ;
     }) ;
 } ;
 exports = module.exports = Benutzer ;

  效果图:

(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 passwort = request.body["password"] ;
     user.login(name,password,function(user){
         if(user){
             Response.end("Willkommen bei:" user["name"] " ^_^ ... ...") ;   
         }
         sonst{
             Response.end("Benutzer:" Name " Nicht registriert !")    ;
         }
     }) ;
 })
 .use("/reg",function(request,response,next){
     var name = request.body["name"] ;
     var passwort = request.body["password"] ;
     neuer Benutzer({
         Name: Name,
         Passwort: Passwort
     }).save(function(user){
         if(Benutzer && Benutzer["Name"]){
           Response.end("Benutzer:" Name "Registrieren Fertig!")    ;   
         }
         sonst{
           Response.end("Benutzer: "Name" hat sich registriert!"); 
         }
     }) ;
 })
 .listen(8888,function(){
     console.log("Webserver läuft auf Port ---> 8888 .") ;
 }) ;

  说明一下:

    (1)„connect.query()“------处理„Get“请求参数解析.

    (2)“connect.bodyParser()“------处理„Post“请求参数解析.

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

     分别代表模板视图„html“以及静态资源如„js,css,jpg,gif“的资源目录.

     以下是这个应用的目录结构:

四,总结一下

  (1),掌握NodeJs操作数据库的基本操作语句.

  (2),划分层级,如模型,视图,路由。

  (3),不断优化和修改本文的例子(比如注册验证用户是否存在, 可以独立出„UserManager“做一层代理完成用户验证和保存的动作).

  (4),明天继续完成后续的功能,尽请期待.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn