zoukankan      html  css  js  c++  java
  • node.js中允许的app对象声明方式

    • 伪对象形式
    app = function () {
        console.log("我是一个初始化的app对象");
    };
    
    app.get=function () {
       console.log('这是一个app的get方法');
    };
    
    app.post = function () {
       console.log('这是一个post方法');
    };
    
    app();
    app.post();

    输出结果

    我是一个初始化的app对象
    这是一个post方法

    • 一个增强的伪对象
    G={};
    var app = function (req,res) {
        if (G['login'])
        {
            G['login'](req,res);
        }
    };
    
    app.get=function (urlinstring,callback) {
       G[urlinstring]=callback;
    };
    app.get('login',function (req,res) {
      //注意,这里的req和res并非http server中的请求和相应对应的req和res console.log(
    "这是login方法用到的参数req的值:"+req); console.log('this is a module for login'); }); setTimeout(function (){ app("嘿~人参娃哟~,嘿真机灵","人参王国片头曲"); },3000);

    输出结果:

    这是login方法用到的参数req的值:嘿~人参娃哟~,嘿真机灵
    this is a module for login

    • 进化版本(新建一个文件夹logic,新起一个文件myserver.js,根据需要,总之新文件一定要有)
    var http =require('http');
    var app = require('./logic/apphandler');
    http.createServer(app).listen(8190);//一旦app对象作为http createServer方法的参数req和res就分别代表http的请求和响应
    • 再起一个文件(apphandler.js)
    G={};
    var url= require('url');
    var app = function (req,res) {
        var urlobj = url.parse(req.url);
        var pathname = urlobj.pathname;
        res.writeHead(200,{'Content-Type':'text/html;charset=UTF-8'});
        console.log("pathname:  "+pathname);
        if (G[pathname])
        {
            G[pathname](req,res);
        }
        else
        {
            G['/'](req,res);
        }
    };
    
    app.get=function (urlinstring,callback) {
       G[urlinstring]=callback;
    };
    app.get('/login',function (req,res) {
        res.write("这是login方法用到的参数req的值:"+req);
        res.end('this is a module for login');
    });
    app.get('/',function (req,res) {
        var pathname=url.parse(req.url).pathname;
        res.end("这是首页");
        //console.log('this is a module for login');
    });
    /*
    setTimeout(function (){
        app("嘿~人参娃哟~,嘿真机灵","人参王国片头曲");
    },3000);*/
    module.exports=app;

    输出结果:

     

  • 相关阅读:
    效果超酷的textarea的输入字数限提示
    【设计模式(七)】结构型模式之桥接模式
    【设计模式(六)】适配器模式
    【设计模式(四)】原型模式
    【设计模式(三)】工厂模式
    【设计模式(二)】单例模式
    【设计模式(一)】设计模式概览与六大设计原则
    【算法刷题】无重复字符的最长子串
    【算法刷题】全排列 II
    【算法刷题】LRU缓存模拟
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/11914442.html
Copyright © 2011-2022 走看看