原生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 ...
随机推荐
- Iframe框架+table布局 +div布局实例
<td colspan="2" style="width: 80%"> <iframe src="http://www.baidu. ...
- Servlet工作原理解析(tomcat7、嵌入式服务器)
目录 Servlet 容器Tomcat Servlet 容器的启动过程 Web 应用的初始化工作 Servlet 体系结构 创建 Servlet 对象(如何被加载) 初始化 Servlet(如何被 ...
- Node.js作web服务器总结
1.为什么Node.js用JS开发 Node.js 含有一系列内置模块,使得程序可以脱离 Apache HTTP Server 或 IIS,作为独立服务器运行. 首先,我们都清楚的是,同时接收数 ...
- python 之常用模块
一 认识模块 二 常用模块 (1)re模块 (2)collections模块 一 认识模块 (1)什么是模块 (2)模块的导入和使用 (1)模块是:一个模块就是一个包含 ...
- 在 Linux 中自动配置 IPv6 地址
在 Linux 中自动配置 IPv6 地址 在本文中,我们将学习如何为 ULA 自动配置 IP 地址. 何时使用唯一本地地址 唯一本地地址unique local addresses(ULA)使用 f ...
- UVA1616-Caravan Robbers(二分)
Problem UVA1616-Caravan Robbers Accept: 96 Submit: 946Time Limit: 3000 mSec Problem Description Lon ...
- WiFi-ESP8266入门http(1)-建立服务器,直接发送网
#include <ESP8266WiFi.h> /*** 该工程可以在2.4.0版本esp8266库中运行,没在更高版本库中进行测试 ***/ const char *ssid = &q ...
- day13----迭代器、生成器、枚举对象
一.迭代器: 定义: (从装有多个值的容器中一次取出一个值给外界) 器:迭代器是个容器,包含多个值 迭代:循环反馈,从容器中一次取出一个值 迭代器不同于索引取值,但是也可以从容器对象中从前往后逐个返回 ...
- 用return关键字实现1——100累加求和,返回总和并接收输出
package com.Summer_0419.cn; /** * @author Summer * 用return关键字实现1——100累加求和,返回总和并接收输出 */ public class ...
- Mybatis学习总结(九)——查询缓存
一.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能.mybaits提供一级缓存和二级缓存. 1.一级缓存是sqlSession级别的缓存.在操作数据库时需要构造sqlSe ...