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;

输出结果:

 

原文地址:https://www.cnblogs.com/saintdingspage/p/11914442.html