zoukankan      html  css  js  c++  java
  • Node.js 学习笔记(二)

    express是nodejs的一个轻量级框架。

    express的功能很简单, 功能依赖中间件。

    安装:在你的项目文件价里打开cmd窗口,在里面使用npm工具(就是在cmd里输入 npm install express)下载express。
     
    用法:
    1.创建服务:
    var server=express();
    2.监听
    server.listen(8080);
    3.处理请求
    server.use('地址',function(req,res){
    });
     

    express简单示例:

    const express= require('express');
    var server=express();
    // server.use('/',function(req,res){
    // use里的第一个参数代表用户请求根目录
    // });
    server.use('/',function(){
      res.send('abc');
      res.end();
    })
    server.listen(8080);
    结果:

     req与res是经过express封装过的,在保留原生功能的基础下又增强了一些方法。如:res.send(),这个方法可以直接在网页上显示json(原来用于显示的write()方法无法显示json)。

     
    监听请求的三种方法:
    .get('/',function(req,res){});//接受get方法
    .post('/',function(req,res){});//接受post方法
    .use('/',function(req,res){}); //get,post都能接受
     
    示例:
    html:
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
      </head>
      <body>
        <form class="" action="http://localhost:8080" method="get">
          <input type="text" name="" value="" placeholder="输入用户名">
          <input type="submit" name="" value="提交">
        </form>
      </body>
    </html>
     
    node:
    const express= require('express');
    var server=express();
    server.post('/',function(req,res){
      console.log('有post');
    });
    server.get('/',function(req,res){
      console.log('有get');
    })
    server.use('/',function(req,res){ // use里的第一个参数代表用户请求根目录
    console.log('有use');
      // res.send('abc');
      // res.end();
    })
    server.listen(8080);
     
    中间件:express-static
    用法:
    server.use(express.static('www'));//设置静态文件目录
    上面那行代码的意思是讲静态文件目录设置为根目录。
    示例:
      
    node:
    const express= require('express');
    const expressStatic=require('express-static');
    var server=express();
    server.listen(8080);
    server.use(expressStatic('./www'));
    在地址栏中输入:http://localhost:8080/index.html
     

    转跳成功~

    ——————————————————————————
    用express搭建简易用户登录系统
    //res.query--->将传入的数据处理成键值对
     
    html:
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title></title>
        <script src="ajax.js" charset="utf-8"></script>
        <script type="text/javascript">
          window.onload=function(){
            var oUser=document.getElementById('user');
            var oPass=document.getElementById('pass');
            var oBtn=document.getElementById('btn1');
     
            oBtn.onclick=function(){
              ajax({
                url:'/login',
                data:{user:oUser.value,pass:oPass.value},
                success:function(str){
                  var json=eval('('+str+')');
                  if(json.ok){
                    alert('登录成功');
                  }else{
                    alert('失败:'+json.msg);
                  }
                },
                error:function(){
                  alert('通信失败');
                }
              });
            };
          };
        </script>
      </head>
      <body>
        <div>
          <input type="text" id="user"><br />
          <input type="password" id="pass"><br />
          <input type="button" value="登录" id="btn1" />
        </div>
      </body>
    </html>
    ajax:
    function json2url(json){
        var arr=[];
        for(var name in json){
            arr.push(name+'='+json[name]);
        }
        return arr.join('&');
    }
     
    function ajax(json){
        json=json || {};
        if(!json.url)return;
        json.data=json.data || {};
        json.type=json.type || 'get';
     
        var timer=null;
     
        if(window.XMLHttpRequest){
            var oAjax=new XMLHttpRequest();
        }else{
            var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
        }
     
        switch(json.type){
            case 'get':
                oAjax.open('GET',json.url+'?'+json2url(json.data),true);
                oAjax.send();
                break;
            case 'post':
                oAjax.open('POST',json.url,true);
                oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                oAjax.send(json2url(json.data));
                break;
        }
     
        oAjax.onreadystatechange=function(){
            if(oAjax.readyState==4){
                clearTimeout(timer);
                if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){
                    json.success && json.success(oAjax.responseText);
                }else{
                    json.error && json.error(oAjax.status);
                }
            }
        };
    }
     
    node:
    const express= require('express');
    const expressStatic=require('express-static');
    var server=express();
    server.listen(8080);
    var users={
      'blue':'123456',
      'zhangsan':'123789',
      'lisi':'111'
    }
    server.get('/login',function(req,res){
      var user=req.query['user'];
      var pass=req.query['pass'];
      if(users[user]==null){ //键值对
        res.send({ok:false,msg:'此用户不存在'});
      }else{
        if(users[user]!=pass){
          res.send({ok:false,msg:'密码错了'});
        }else{
          res.send({ok:true,msg:'成功'});
        }
      }
    })
    server.use(expressStatic('./www'));
     
  • 相关阅读:
    需求获取过程中的逆向沟通
    程序员==生 涯 篇
    算法设计
    灯的启示:微软对唐骏的面试题
    使用Gzip压缩提升WEB服务器性能
    简历误区
    招聘编辑的七道面试题
    web2.0及其相关技术
    经典面试题助你成功就业
    逗号网站推广营销策略
  • 原文地址:https://www.cnblogs.com/BlackFungus/p/9153595.html
Copyright © 2011-2022 走看看