Maison >interface Web >js tutoriel >Notes d'étude NodeJS - Application middleware Connect example_node.js

Notes d'étude NodeJS - Application middleware Connect example_node.js

WBOY
WBOYoriginal
2016-05-16 16:17:421190parcourir

1, analyse d'ouverture

Bonjour à tous, M. Big Bear est de nouveau là. Je n'ai pas écrit de blog hier à cause de questions personnelles. Aujourd'hui, j'ai un autre article sur l'écriture d'une petite application de bloc-notes. 🎜>

J'ai également présenté l'utilisation du middleware "Connect" et l'utilisation de "Mongodb". Aujourd'hui, je vais combiner ces deux middlewares et écrire un exemple pratique, je vais continuer à les améliorer et à les reconstruire et j'ai atteint

.

Objectif d'apprentissage complet. Bon, arrêtons de dire des bêtises et passons directement au sujet.

2. Analyse de la demande

(1), fonctions d'enregistrement et de connexion de l'utilisateur (aucun scénario d'interaction complexe impliqué, l'utilisateur déterminera s'il existe déjà lors de l'inscription).

(2), l'utilisateur se connecte avec succès et entre dans l'arrière-plan du système de gestion de notes (ajouter, supprimer, modifier et vérifier les fonctions du module de notes).

(3), les utilisateurs peuvent avoir une simple division d'autorisation (administrateur, utilisateur enregistré).

(4), l'interface est relativement simple et axée sur l'apprentissage.

3. Commencez à concevoir l'application (Partie 1)

(1), créez une page de connexion utilisateur, le code est le suivant :

Copier le code Le code est le suivant :



   
        Bigbear记事本应用登录
       
       
       
       
   

   
       
Bigbear记事本应用登录

           

                用户名:


                密  码:
               
                我要注册
           
   

  效果图:

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

复制代码 代码如下 :

 
 
    
         Bigbear记事本应用注册
        
        
        
        
    

    
        
Bigbear记事本应用注册

            
                 用户名:


                
                
            
    

 

  效果图:

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

复制代码 代码如下 :

 var mongodb = require("mongodb") ;
 var serveur = nouveau mongodb.Server("localhost",27017,{
     auto_reconnect : vrai
 }) ;
 var conn = new mongodb.Db("bb",server,{
     sûr : vrai
 }) ;
 conn.open(fonction(erreur,db){
     if(error) renvoie une erreur ;
     console.info("mongodb connecté !") ;
 }) ;
 exports = module.exports = conn ;

(4),建立模型实体类« Utilisateur »,如下:

复制代码 代码如下 :

 var conn = require("../conn") ;
 fonction Utilisateur(utilisateur){
     this.name = utilisateur["name"] ;
     this.password = utilisateur["mot de passe"] ;
 } ;
 User.prototype.save = function(callback){
     var ça = ceci ;
     conn.collection("utilisateurs",{
         sûr : vrai
     },fonction (erreur,collection){
         if(error) return conn.close() ;
         collection.findOne({   // 判断此用户是否存在
             nom : ce.nom
         },fonction (erreur,utilisateur){
             if(error) return conn.close() ;
             si(!utilisateur){
                 collection.insert({
                     nom : ce.nom "" ,
                     mot de passe : that.password ""
                 },{
                     sûr : vrai
                 },fonction (erreur,utilisateur){
                     if(error) return conn.close() ;
                     rappel && rappel(utilisateur) ;
                     conn.close() ;
                 }) ;       
             >
             autre{
                 callback("L'utilisateur s'est inscrit !") ;
             >
         }) ;
     }) ;
 } ;
 User.login = function(nom, mot de passe, rappel){
     conn.collection("utilisateurs",{
         sûr : vrai
     },fonction (erreur,collection){
         if(error) return conn.close() ;
         collection.findOne({
             nom : nom,
             mot de passe : mot de passe
         },fonction (erreur,utilisateur){
             if(error) return conn.close() ;
             rappel && rappel(utilisateur) ;
             conn.close() ;
         }) ;
     }) ;
 } ;
 exports = module.exports = Utilisateur ;

  效果图:

(5),建立应用程序« application »,如下:

复制代码 代码如下 :

 // app.js
 var connect = require("./lib/connect") ;
 var utilisateur = 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(requête, réponse, suivant){
     var nom = request.body["name"] ;
     var mot de passe = request.body["password"] ;
     user.login (nom, mot de passe, fonction (utilisateur) {
         si (utilisateur) {
             réponse.end("Bienvenue dans :" utilisateur["nom"] " ^_^ ......") ;   
         >
         autre{
             réponse.end("Utilisateur :" nom " Pas d'inscription !")    ;
         >
     }) ;
 })
 .use("/reg",function(requête, réponse, suivant){
     var nom = request.body["name"] ;
     var mot de passe = request.body["password"] ;
     nouvel utilisateur ({
         nom : nom,
         mot de passe : mot de passe
     }).save(fonction(utilisateur){
         si(utilisateur && utilisateur["nom"]){
           réponse.end("Utilisateur :" nom "Inscription terminée !")    ;   
         >
         autre{
           réponse.end("Utilisateur : " nom "est enregistré !") ; 
         >
     }) ;
 })
 .écouter(8888,fonction(){
     console.log("Serveur Web exécuté sur le 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" et "UserManager"层代理完成用户验证和保存的动作)。

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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn