路由的基本配置
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%>