原生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 ...
 
随机推荐
- 我的BRF+自学教程(一):公式(formula)
			
Business Rule Framework Plus(业务规则框架,以下简称BRFplus或BRF+)是一个强大的工具, 它允许用户以直观的方式对规则建模,并在不同的应用程序中重用这些规则.通过它 ...
 - 4、爬虫系列之mongodb
			
mongodb mongo简介 简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数 ...
 - 51nod 1238 最小公倍数之和 V3
			
51nod 1238 最小公倍数之和 V3 求 \[ \sum_{i=1}^N\sum_{j=1}^N lcm(i,j) \] \(N\leq 10^{10}\) 先按照套路推一波反演的式子: \[ ...
 - 【转】MFC内嵌cef3浏览器内核
			
一.cef3内核的下载 可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_b ...
 - 深入理解session机制
			
原文链接https://blog.csdn.net/xihuangwutong/article/details/9819033 1. session概念 2. http协议与状态保持 3. 理解coo ...
 - 【angularjs】使用ionic+angular 搭建移动端项目,字体适配
			
解析: 首先,rem是以html为基准. 一般的,各大主流浏览器的font-size默认值为16px,此时1rem=16px.如果此时将rem与px进行换算很麻烦,比如0.75rem=12px. 为了 ...
 - WiFi-ESP8266入门http(2-1)文件系统-复杂结构的网页
			
https://blog.csdn.net/solar_Lan/article/details/74231360 用到的网页文件:链接:https://pan.baidu.com/s/1vk6xmsY ...
 - .Net使用Redis详解之ServiceStack.Redis(七) 转载https://www.cnblogs.com/knowledgesea/p/5032101.html
			
.Net使用Redis详解之ServiceStack.Redis(七) 序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现 ...
 - day15--认识模块、导入模块、自执行与模块的区别
			
一.认识模块 什么是模块? 模块本质是一些功能的集合体 创建的一个py文件就是一个模块 使用模块: 在使用模块的py文件中 通过 import 或者 from import导入模块 模块的优点: 可 ...
 - object detection[rfcn]
			
0 - 背景 从rcnn,spp,fast rcnn, faster rcnn,yolo,ssd,这里又有个新模型叫rfcn,即Region-based Fully Convolutional Net ...