Rumah  >  Artikel  >  hujung hadapan web  >  Node kajian NodeJS - Sambungkan aplikasi middleware example_node.js

Node kajian NodeJS - Sambungkan aplikasi middleware example_node.js

WBOY
WBOYasal
2016-05-16 16:17:421118semak imbas

1, analisis pembukaan

Salam semua, Encik Beruang Besar datang lagi Saya tidak menulis blog semalam kerana beberapa perkara peribadi Hari ini saya mempunyai artikel lain tentang menulis aplikasi notepad yang kecil 🎜>

Saya juga telah memperkenalkan penggunaan middleware "Connect" dan penggunaan "Mongodb". Hari ini saya akan menggabungkan kedua-dua middleware ini dan menulis contoh yang praktikal

Tujuan pembelajaran penuh. Baiklah, mari kita berhenti bercakap karut dan pergi terus ke topik.

2. Analisis permintaan

(1), pendaftaran pengguna dan fungsi log masuk (tiada senario interaksi kompleks yang terlibat, pengguna akan menentukan sama ada ia sudah wujud semasa pendaftaran).

(2), pengguna berjaya log masuk dan memasuki latar belakang sistem pengurusan nota (tambah, padam, ubah suai dan semak fungsi modul nota).

(3), pengguna boleh mempunyai bahagian kebenaran mudah (pentadbir, pengguna berdaftar).

(4), antara mukanya agak mudah dan memfokuskan pada pembelajaran.

3 Mula mereka bentuk aplikasi (Bahagian 1)

(1), buat halaman log masuk pengguna, kodnya adalah seperti berikut:

Salin kod Kod adalah seperti berikut:



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

           

                用户名:


                密  码:
               
                我要注册
           

   

  效果图:

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

复制代码 代码如下:

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

            

                 用户名:


                 密  码:


                
            

    
 

  效果图:

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

复制代码 代码如下:

 var mongodb = memerlukan("mongodb") ;
 pelayan var = mongodb.Server baharu("localhost",27017,{
     auto_reconnect : benar
 }) ;
 var conn = mongodb.Db baharu("bb",pelayan,{
     selamat : benar
 }) ;
 conn.open(fungsi(ralat,db){
     if(error) throw error ;
     console.info("mongodb disambungkan !") ;
 }) ;
 eksport = modul.eksport = sambung ;

(4),建立模型实体类“Pengguna”,如下:

复制代码 代码如下:

 var conn = memerlukan("../conn") ;
 fungsi Pengguna(pengguna){
     this.name = pengguna["name"] ;
     this.password = pengguna["kata laluan"] ;
 } ;
 User.prototype.save = fungsi(panggilan balik){
     var itu = ini ;
     conn.collection("pengguna",{
         selamat : benar
     },fungsi(ralat,pengumpulan){
         if(error) return conn.close() ;
         collection.findOne({   // 判断此用户是否存在
             nama : that.name
         },fungsi(ralat,pengguna){
             if(error) return conn.close() ;
             jika(!pengguna){
                 collection.insert({
                     nama : that.name "" ,
                     kata laluan : that.password ""
                 },{
                     selamat : benar
                 },fungsi(ralat,pengguna){
                     if(error) return conn.close() ;
                     panggil balik && panggil balik(pengguna) ;
                     conn.close() ;
                 });       
             }
             lain{
                 panggil balik("Pengguna telah mendaftar !") ;
             }
         });
     }) ;
 } ;
 User.login = fungsi(nama,kata laluan,panggilan balik){
     conn.collection("pengguna",{
         selamat : benar
     },fungsi(ralat,pengumpulan){
         if(error) return conn.close() ;
         collection.findOne({
             nama : nama ,
             kata laluan : kata laluan
         },fungsi(ralat,pengguna){
             if(error) return conn.close() ;
             panggil balik && panggil balik(pengguna) ;
             conn.close() ;
         });
     }) ;
 } ;
 eksport = module.exports = Pengguna ;

  效果图:

(5),建立应用程序“aplikasi”,如下:

复制代码 代码如下:

 // app.js
 var connect = memerlukan("./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",fungsi(permintaan,tindak balas,seterusnya){
     var name = request.body["name"] ;
     kata laluan var = request.body["kata laluan"] ;
     pengguna.log masuk(nama,kata laluan,fungsi(pengguna){
         jika(pengguna){
             response.end("Selamat Datang ke:" pengguna["nama"] " ^_^ ... ...") ;   
         }
         lain{
             response.end("User:" name " Not Register !")    ;
         }
     }) ;
 })
 .use("/reg",function(request,response,next){
     var name = request.body["name"] ;
     kata laluan var = request.body["kata laluan"] ;
     pengguna baharu({
         nama : nama ,
         kata laluan : kata laluan
     }).save(fungsi(pengguna){
         if(pengguna && pengguna["nama"]){
           response.end("User:" name "Daftar Selesai !")    ;   
         }
         lain{
           response.end("Pengguna: " nama "telah mendaftar !"); 
         }
     }) ;
 })
 .listen(8888,function(){
     console.log("Pelayan Web Berjalan Di 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),不断优化和修改本文的例子(比如注册验证用户是否存國,可一一在,可一了代理完成用户验证和保存的动作)。

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn