原生node路由操作以及注意事项
var http = require("http");
var url = require("url");
var ejs = require("ejs");
var querystring = require("querystring");
var server = http.createServer(function(req,res){
res.writeHead(200,{"content-type":"text/html;charset=utf-8"});
//当输入 localhost:8000/login 请求登录页面
//当点击 登录按钮 提交数据 action 路径???
var pathname = url.parse( req.url ).pathname;
//获取客户端请求数据的方式 get post
var method = req.method.toLowerCase();
//路由 显示登录页面
if( pathname == "/login" ){
//请求登录页面
ejs.renderFile("views/login.ejs",{},function(err,data){
//注意:如果传送的数据是json套json或者是数组ejs模板只能显示最基本的变量值 object.username 不能显示object类型的数据。
res.end(data);
})
}else if( pathname === "/dologin" && method ==="get" ){ //添加路由 实现登录功能
var query = url.parse( req.url , true).query
//接收客户端请求的数据
console.log(query.username,query.userpwd);
//接收客户端请求的用户名和密码
res.end("dologin");
}else if( pathname === "/dologin" && method ==="post" ){
console.log(999)
//获取post方式提交的数据
//通过data事件 响应数据
var dataStr = "";
req.on("data",function(data){
dataStr += data;
})
//通过end事件 告诉服务器 数据接收完毕
req.on("end",function(){
//console.log(dataStr); username=aaa&userpwd=888
//JSON.parse( '[{}]' ) ('{}')
var json = querystring.parse( dataStr );
// console.log( json.username ,json.userpwd );
//假设 如果 客户端传递的是admin 密码 123456 要求提示登录成功 否则登录失败
if( json.username =="admin" && json.userpwd =="123456" ){
console.log(10000)
res.write("<script>alert('登录成功');location.href='/home'</script>");
//localhost:8000/home
res.end();
}else{
res.write("<script>alert('登录失败');location.href='/login'</script>");
//localhost:8000/home
res.end();
}
})
}else if( pathname === "/home" ){
//请求index.ejs页面
ejs.renderFile("views/home.ejs",{},function(err,data){
res.end(data);
})
}
}).listen(8000);
//服务页
let http = require('http');
let urlStr = require('url'); let model = require('./model'); let server = http.createServer((req,res)=>{
let url = urlStr.parse(req.url,true);
//这是一个url 对象。
if(url.pathname==='/login'&&req.method.toLowerCase()==='get'){
model.login(req,res);
}else if(url.pathname==='/dologin'&&req.method.toLowerCase()==='post'){
model.dologin(req,res);
}
})
server.listen(3000,()=>{
console.log('start');
}) //================
model页面
/**
* this is router handle
*/ let url = require('url');
let ejs = require('ejs');
// 模块依赖项 module.exports = {
login(req,res){
ejs.renderFile('./ejs/login.ejs',{login:'登录'},(err,html)=>{
res.end(html);
})
},
dologin(req,res){
let arr = [
{"pid":1,"pname":"小米1","price":2888},
{"pid":2,"pname":"小米2","price":3888},
{"pid":3,"pname":"小米3","price":4888},
{"pid":4,"pname":"小米4","price":5888},
{"pid":5,"pname":"小米5","price":6888},
]
ejs.renderFile('./ejs/index.ejs',{dologin:'登录成功',goods:arr,year:2011},(err,html)=>{
res.end(html);
})
}
}
主页<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div>
<%=dologin%>
</div>
<%goods.map((message,ind)=>{%>
<div style="float: left;border: 1px solid black">
<%for(i in message){%>
<div style="border: 1px solid black"><%=message[i]%></div>
<%}%>
</div>
<%})%>
<%if(year%4===0&&year%100!==0||year%400===0){%>
<div><%=year%>是闰年</div>
<%}else{%>
<div><%=year%>不是闰年</div>
<%}%>
</body>
</html>
登录页<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="/dologin" method="POST">
<input type="text" name="username">
<input type="password" name="password">
<button> <%=login%></button>
</form>
</body>
</html>
原生node路由操作以及注意事项的更多相关文章
- Hadoop HDFS文件常用操作及注意事项
Hadoop HDFS文件常用操作及注意事项 1.Copy a file from the local file system to HDFS The srcFile variable needs t ...
- node.js系列(实例):原生node.js实现接收前台post请求提交数据
前台界面: 前台代码: <form class="form-horizontal" method="post" action="http:127 ...
- 编写原生Node.js模块
导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...
- Node.js 操作Mongodb
Node.js 操作Mongodb1.简介官网英文文档 https://docs.mongodb.com/manual/ 这里几乎什么都有了MongoDB is open-source docum ...
- 原生node实现简易留言板
原生node实现简易留言板 学习node,实现一个简单的留言板小demo 1. 使用模块 http模块 创建服务 fs模块 操作读取文件 url模块 便于path操作并读取表单提交数据 art-tem ...
- koa 基础(十)原生node.js 在 koa 中获取表单提交的数据
1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...
- js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)
js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var ...
- 【python cookbook】【数据结构与算法】14.对不原生支持比较操作的对象排序
问题:想在同一个类的实例之间做排序,但是它们并不原生支持比较操作. 解决方案:使用内建的sorted()函数可接受一个用来传递可调用对象的参数key,sorted利用该可调用对象返回的待排序对象中的某 ...
- 使用node js 操作 Mysql 数据库
使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...
随机推荐
- Spring的事务管理1
事务的回顾: 事务:逻辑上的一组操作,组成这组事务的各个单元,要么全部成功,要么全部失败 事务的特性:ACID 原子性(Atomicity):事务不可分割 一致性(Consistency):事务执行前 ...
- 【技术与商业案例解读笔记】095:Google大数据三驾马车笔记
1.谷歌三驾马车地位 [关键词]开启时代,指明方向 聊起大数据,我们通常言必称谷歌,谷歌有“三驾马车”:谷歌文件系统(GFS).MapReduce和BigTable.谷歌的“三驾马车”开启了大数据时 ...
- Nginx使用教程(六):使用Nginx缓存之FastCGI缓存
启用FastCGI缓存 <br\>编辑必须启用缓存的虚拟主机配置文件. nano /etc/nginx/sites-enabled/vhost 将以下行添加到server{}指令之外的文件 ...
- 小程序背景图片bug
在pc端调试的时候已经可以看到出现背景图片了,但是在真机调试的时候却发现没有背景图片,那么原因是什么呢?真机调试和vconsole也看不出什么鸟,其实这是小程序的一个bug.另一种说法是:backgr ...
- Linux 系统故障排查和修复技巧
Linux 系统故障排查和修复技巧 我发现Linux系统在启动过程中会出现一些故障,导致系统无法正常启动,我在这里写了几个应用单用户模式.GRUB命令操作.Linux救援模式的故障修复案例帮助大家了解 ...
- 数据库的连接、会话与SQLite
通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文(Context).这个上下文是一段位于服务器端的内存:记录了本次连接的所有相关状态和运行数据. 连接(Connecti ...
- UVA12627-Erratic Expansion(递归)
Problem UVA12627-Erratic Expansion Accept: 465 Submit: 2487Time Limit: 3000 mSec Problem Descriptio ...
- [matlab] 8.蚁群算法解决TSP问题
城市坐标数据下载 密码:07d5 求遍历这52座城市后最后回到最初城市的最短距离 %% 第9章 蚁群算法及MATLAB实现——TSP问题 % 程序9-1 %% 数据准备 % 清空环境变量 clear ...
- P1515 旅行(简单搜索)
非常简单的搜索. 思路:先排序,然后,搜索枚举的时候满足A < 两个旅店 < B,然后,搜索就行了. #include<iostream> #include<algori ...
- 【window】git安装教程
相关链接:https://blog.csdn.net/nly19900820/article/details/73379854 作者:smile.轉角 QQ:493177502