nodejs模块化方法封装路由

1、代码目录结构


2、02router.js

var model = require('./model/model')
var http = require('http')
var url = require('url')
http.createServer(function(req,res){
    res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});
    var pathname=url.parse(req.url).pathname.replace('/','')
    //因为函数的内部可能存在错误,所以要进行try,catch捕获
    if(pathname != 'favicon.ico'){
        try{
            model[pathname](req,res);
        }
        catch(err){//catch过异常之后,就能够进行后续的操作了
            /*
            *   没有这个方法,即没有定义这个路由
            * */
            console.log(err)
            model['home'](req,res)
        }
    }
}).listen(8001)

3、model.js

var ejs = require('ejs')
var fs = require('fs')
var app = {
    login: function (req, res) {
        console.log('login');
        ejs.renderFile('views/form.ejs', {}, function (err, data) {
            res.end(data)
        })
        //res.end('login')
    },
    register: function (req, res) {
        console.log('register');
        res.end('register')
    },
    home: function (req, res) {
        console.log('home')
        res.end('home')
    },
    doLogin: function (req, res) {
        var postStr = '';
        //请求时准备数据
        req.on('data', function (chunk) {
            postStr += chunk;
        })
        //请求完成时
        req.on('end', function (err, chunk) {
            console.log(postStr);
            fs.appendFile('login.txt', postStr + '\n', function (err) {
                if (err) {
                    console.log(err);
                    return;
                }
                console.log('data is written successly')
            })
            res.end("<script>alert('login successly');history.back();</script>")
        })
    }
}
module.exports = app

猜你喜欢

转载自blog.csdn.net/jiuweideqixu/article/details/86593305