const express = require('express');
var server = express();//建立服务
//请求根目录执行
server.use('/a.html',function(req,res){
res.send('aaa');
res.end();
});
server.use('/b.html',function(req,res){
res.send('bbb');
res.end();
});
server.listen(8080);//监听
//send能够直接返回 json
server.use('/a.html',function(req,res){
res.send({a:1,b:2});
res.end();
});
职匹配一个css
express-static:html
npm install express-static
08express1/server2.jsnode
const express = require('express');
const expressStatic = require('express-static');
var server = express();
server.listen(8080);
//指定去哪儿读 静态文件
server.use(expressStatic('./www'));
// localhost:8080/a.html
返回: {"ok":true,"msg":"成功"}mysql
获取参数 req.querygit
var users ={
'yuonly':'123123',
'zhangsan':'666',
'lisi':'999'
}
server.get('/login',function(req,res){
//直接获取get参数的对象
var username = req.query['username'];
var pwd = req.query['pwd'];
if(users[username]==null){
res.send({ok:false,msg:'用户不存在'});
}else{
if(users[username]!=pwd){
res.send({ok:false,msg:'用户名密码错误'});
}else{
res.send({ok:true,msg:'登陆成功'});
}
}
})
// http://localhost:8080/login?username=lisi&pwd=123
安装 bodyparser
npm install body-parser
引入模块
const bodyParser = require('body-parser');
定义urlencoded中间件
server.use(bodyParser.urlencoded({}));
server.post('/',function(req,res){
从req.body中读取post数据
console.log(req.body);
})
post: 须要 body-parser中间件sql
server.use(bodyParser.urlencoded({
extended:true,//启用扩展模式,意义不大
limit:2*1024//限制 默认100k
}));
req.body
server.use('/',function(req,res,next){
console.log('aaa');
next();
})
server.use('/',function(req,res,next){
console.log('bbb');
})
server.use(function(req,res,next){
var str = '';
req.on('data',function(data){
str += data;
})
req.on('end',function(){
//解析事后的数据,绑定到req.body身上
req.body = querystring.parse(str);
//next后,在下面匹配的中间件仍然能够接收到 req.body的数据
next();
})
})
server.use('/',function(req,res){
console.log(req.body);
})
const querystring = require('querystring');
module.exports = function(req,res,next){
var str = '';
req.on('data',function(data){
str += data;
})
req.on('end',function(){
req.body = querystring.parse(str);
next();
})
}
const express = require('express');
const bodyParser2 = require('./libs/my-body-parser.js');
var server = express();
server.listen(8080);
server.use(bodyParser2);
server.use('/',function(req,res){
console.log(req.body);
})
cookie: 在浏览器保存一些数据,每次向服务器发起请求都会带过来数据库
不安全、存储空间小(4K)express
session: 保存在服务端,但session依赖cookienpm
更安全json
cookie中会有一个sessionid的ID,服务器根据cookie带过来的sessionid找到服务器端与之对应的文件,进行读取或写入
cnpm install express express-static cookie-parser cookie-session
加密 10cookie-session/server2.js
req.secret = 'yuonly123123123';
res.cookie('user','yuonly',{signed:true});
const express = require('express');
var server = express();
//cookie
const cookieparser = require('cookie-parser');
server.use(cookieparser());
server.use('/aaa/a.html',function(req,res){
//读取cookie 装完cookie-parser后有这个属性
console.log(req.cookies,'read');
//发送cookie
res.cookie('user','yuonly',{path:'/aaa',maxAge:30*24*3600*1000});
res.send('ok');
})
// http://localhost:8080/aaa/a.html
server.listen(8080);
发送
res.sercet = 'sjksdjfkl123';
res.cookie(名字,值,{path:生效路径,maxAge:有效期,signed:是否须要签名})
读取cookie
cookie-parser
service.use(cookieParser(签名))
service.use(function(req,res){
req.cookies;
req.signedCookies;
})
删除
res.clearCookie(key)
扩展--加密 cookie-encrypter
server.use(cookiesession({
//session要有效,必须设置keys。
keys:['111','2222','3333','4444','555']
}));
if(req.session['count']==null){
req.session['count'] = 1;
}else{
req.session['count']++;
}
console.log(req.session['count']);
res.send('ok');
res.end();
req.session['count'] = 1;
安装
cnpm install ejs
const ejs = require('ejs');
// 模板 数据
ejs.renderFile('./view/1.ejs',{name:'yuonly'},function(err,data){
console.log(data);
});
<div>
<%= name %>
</div>
const ejs = require('ejs');
ejs.renderFile('./view/2.ejs',{json:{arr:[{username:'yuonly'},{username:'xiaowang'}]}},function(err,data){
console.log(data);
});
<% for(var i=0;i<json.arr.length;i++){ %>
<div>
<%= json.arr[i].username %>
</div>
<% } %>
<% var str = '<div></div>'; %>
// html实体
<%= str %>
// html标签自己
<%- str %>
cnpm install express express-static cookie-parser cookie-session body-parser ejs --save
bodyparser弊端,只能解析post数据,不能处理post上来的文件
只能获取上传文件的文件名.form表单 加上 enctype以后,干脆没东西了。
server_file.js
const express = require('express');
const bodyParser = require('body-parser');
var server = express();
server.use(bodyParser.urlencoded({extended:false}));
server.post('/',function(req,res){
console.log(req.body);
})
server.listen(8080);
<form action="http://localhost:8080" method="post" enctype="multipart/form-data">
文件: <input type="file" name="username" id=""> <br>
<input type="submit" value="上传">
</form>
//1 安装
cnpm install multer --save
//2 导入
var multer = require('multer');
//3 建立multer对象
var objMulter = multer({dest:'./www/upload/'});
//4 使用对应方法,any 上传多文件
server.use(objMulter.single('f1'));
server.post('/',function(req,res){
//5 获取上传文件
console.log(req.files);
// [ { fieldname: 'username',
// originalname: '屏幕快照 2017-05-30 上午8.12.11.png',
// encoding: '7bit',
// mimetype: 'image/png',
// buffer: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 10 00 00 01 94 08 06 00 00 00 fd 2b 7d db 00 00 01 5e 69 43 43 50 49 43 43 20 50 72 6f 66 69 ... >,
// size: 160018 } ]
})
multer:用来解析文件的数据 enctype="multipart/form-data"
//1 multerObj
var obj = multer({dest:'upload'});
//2 设定上传方法
server.use(obj.any());
//3 使用
server.use('/',function(req,res,next){
<!-- req.files -->
//4.新的文件名
var pathObj = pathLib.parse(req.files[0].originalname);
var newName = req.files[0].path + pathObj.ext;
//5.重命名 req.files[0].path
fs.rename(req.files[0].path,newName,function(err){
if(err){
res.send('上传失败');
}else{
res.send('成功');
}
})
})
cnpm install consolidate --save
输出什么东西
server.set('view engine','html');
模板文件放在哪儿了
server.set('views','./views');
我要用哪一种模板引擎
server.engine('html',consolidate.ejs);
至关于子服务器 server
//1.建立router
var routeUser = express.Router();
//2.把router添加到server
server.use('/user',routeUser);
//3.router内部的路由的定义
routeUser.get('/1.html',function(req,res){
res.send('user1');
})
routeUser.get('/2.html',function(req,res){
res.send('user222');
})
//localhost:8080/user/1.html
//localhost:8080/user/2.html
Server端:存数据 Client端:管理工具、Node
cnpm i mysql --save
const mysql = require('mysql');
//1.连接数据库
// mysql.createConnection(哪台服务器,用户名,密码,库名);
var db = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'jy1608_blog',
port:8889
});
//2.查询
db.query("SELECT * FROM `user`;",function(err,data){
if(err){
console.log(err);
}else{
console.log(data,'data');
}
})