node的get post传值和node模拟expess框架路由的装以及node模拟express框架路由的封装 get+post请求和get+post传值

路由的基本配置

var http = require("http");
/* 
路由的基本配置


基本路由配置完成之后  根据路由导出页面渲染
安装ejs cnpm install ejs
自动生成 package.json 文件  以及依赖包
使用去导入
*/
var ejs = require("ejs");
var url = require("url");
http.createServer(function (req, res) {
    //根据路由加载页面
    var path = url.parse(req.url).pathname;
    if (path == "/") {
        //ejs模板渲染单个变量
        var name = "毛豆";
        var go = "我在哪";
        ejs.renderFile("./assets/index.ejs", {
            name: name,
            go: go
        }, function (err, str) {
            res.end(str);
        });
    }
    else if (path == "/login") {
        //绑定数组
        var arr = [1, 2, 3, 4, 5, 6];
        ejs.renderFile("./assets/login.ejs", {
            array: arr,
            name: "李四"
        }, function (err, str) {
            res.end(str);
        });
    }
    else {
        //ejs绑定json 数据
        var stu = [
            { name: "张三", age: 18 },
            { name: "李四", age: 20 }
        ]
        ejs.renderFile("./assets/regest.ejs", {
            student: stu,
            name: "王五"
        }, function (err, str) {
            res.end(str);
        });
    }
}).listen(8200);

关于ejs
<% ‘脚本’ 标签,用于流程控制,无输出。
<%_ 删除其前面的空格符
<%= 输出数据到模板(输出是转义 HTML 标签)
<%- 输出非转义的数据到模板
<%# 注释标签,不执行、不输出内容
<%% 输出字符串 ‘<%’
%> 一般结束标签
-%> 删除紧随其后的换行符
_%> 将结束标签后面的空格符删除

index.ejs





    
    
    
    Document



    

我是首页

ejs模板绑定数据

<%=name %>

<%=go%>

<%-include('./moban.ejs')%>

login.ejs





    
    
    
    Document



    

我是登录界面

ejs 绑定数组

    <% for(var i=0;i
  • <%=array[i]%>
  • <%}%> <% array.forEach(function(val,index){%>
  • <%=val%>
  • <%})%>
<%-include('./moban.ejs')%>

moban.ejs

我是模板页面
<%=name%>

node的get,post传值
app.js

var http=require("http");
var router=require("./module/router");
http.createServer(router).listen(8100);
var url = require("url");
var ejs = require("ejs");
module.exports = function (req, res) {
    var urlpath = url.parse(req.url, true);
    var path = urlpath.pathname;
    if (path != "/favicon.ico") {
        if (path == "/") {
            ejs.renderFile("static/index.ejs", "", function (err, str) {
                if (err) return;
                res.end(str);
            });
        }
        else if (path == "/login") {
            var query = urlpath.query;
            //前后到后台 get传值  url.parse 模块解析路径get传值  取值是query.id,query.pwd
            console.log(query.id, query.pwd);
            ejs.renderFile("static/login.ejs", "", function (err, str) {
                if (err) return;
                res.end(str);
            })
        }
        else if(path=="/loginpost")
        {
            //post 传值使用事件监听来获取里面的数据
            var result="?";
            req.on("data",function (res){
                result+=res.toString()
            });
            //当没有可读数据的时候触发
            req.on("end",function (){
                console.log(url.parse(result,true))
            });
            ejs.renderFile("static/loginpost.ejs", "", function (err, str) {
                if (err) return;
                res.end(str);
            })
        }
    }
}

index.ejs





    
    
    
    Document



    
  • 账号:
  • 密码:

form表单get传值成功后跳转到/login 渲染login.ejs





    
    
    
    Document



    
get 传值登录成功 登录成功!

form表单post传值成功后跳转到/loginpost 渲染loginpost.ejs




    
    
    
    Document


    
post 传值登录成功 登录成功!

node模拟exprss框架路由封装

var http = require("http");
var app = require("./router");
http.createServer(app).listen(8100);

//注册路由
app.get("/", function (req, res) {
    res.send("首页");
});
app.get("/login", function (req, res) {
    res.send("login");
});
/* 
模拟 express路由写法
*/
var url = require("url");
var obj = {};

var app = function (req, res) {
    res.send = function (data) {
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
        res.end(data)
    }
    var path = url.parse(req.url).pathname;
    if (path == "/favicon.ico") return;
    if (obj[path])//判断路由在不在路由
    {
        //路由方法
        obj[path](req, res);
    }
    else {
        res.end("404");
    }
    console.log(obj)
}
//方法上挂在方法
app.get = function (string, callback) {
    obj[string] = callback;
}
module.exports = app;

node模拟express框架封装 get+post请求以及传值
app.js

var http = require("http");
var app = require("./router");
var ejs = require("ejs");
http.createServer(app).listen(8100);

//注册路由
app.get("/", function (req, res) {
    ejs.renderFile("static/index.ejs", "", function (err, str) {
        if (err) return;
        res.send(str);
    })
});
app.post("/login", function (req, res) {
    var data=req.body;
    ejs.renderFile("static/login.ejs", data, function (err, str) {
        if (err) return;
        res.send(str);
    });
});

router.js

/* 
模拟 express路由写法
*/
var url = require("url");
var obj = {};
obj._get = {};
obj._post = {};
var app = function (req, res) {
    res.send = function (data) {
        res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
        res.end(data)
    }
    //找当前req   请求的method  方式  get  post
    var method = req.method.toLowerCase();
    var urlpath = url.parse(req.url, true);
    var path = urlpath.pathname;
    if (path == "/favicon.ico") return;
    if (obj["_" + method][path])//判断路由在不在路由
    {
        if (method == "get") {
            req.body = urlpath.query;
            //路由方法
            obj["_" + method][path](req, res);
        }
        else {
            //监听事件
            var result = "?";
            req.on("data", function (str) {
                result += str;
            });
            req.on("end", function () {
                //post 传值 解析出来直接传给req.body属性
                req.body = url.parse(result, true).query
                //路由方法
                obj["_" + method][path](req, res);
            });
        }
    }
    else {
        res.end("404");
    }
    //console.log(obj)
}
//方法上挂在方法
app.get = function (string, callback) {
    obj._get[string] = callback;
}
app.post = function (string, callback) {
    obj._post[string] = callback;
}
module.exports = app;

from表单
index.ejs





    
    
    
    Document



    
  • 账号:
  • 密码:

登陆成功后跳转的login
login.ejs





    
    
    
    Document



    
传值登录成功 登录成功!
<%=id%>
<%=pwd%>

你可能感兴趣的:(node,node的get,post传值,get+post请求和传值)