- 安装
npm install express --save
- 使用
var express =require('express')
var app=new express()//实例化
- 最简单的express程序,目标:在浏览器中输入http://localhost:8000,在浏览器中输出Hello express
var express=require('express');
var app=express();
app.get('/',function(req,res){//
res.send('hello');
}).listen(8000);
- 路由跳转
var express=require('express');
var app=express();
app.get('/',function(req,res){
res.send('主页')
})
app.get('/signup',function(req,res){
res.send('注册');
})
app.get('/signin',function(req,res){
res.send('登陆');
})
app.listen(3000);
- express使用ejs模板
安装
npm install ejs --save
引入
app.set('view engine','views');//
app.set('views', __dirname + '/views');//设置模板路径,模板默认在views中
app.js
var express=require('express');
var app=express();
app.set('view engine','ejs');
app.use(express.static('public'));
app.get('/',function(req,res){
var list=['11','22','33']
res.render('signup',{
list:list
});
})
app.listen(8000);
signup.ejs
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<ul>
<% for(var i=0;i<list.length;i++){%>
<li><%=list[i]%></li>
<%}%>
</ul>
</body>
</html>
- 中间件
1.应用级中间件
var express=require('express');
var app=express();
app.use(function(req,res,next){//匹配任意路由
res.send('匹配任意路由');
next();//匹配完这个中间件后继续执行下面的程序
})
app.get('/',function(req,res){
res.send('主页');
})
app.get('/login',function(req,res){
res.send('登陆');
})
app.get('/register',function(req,res){
res.send('注册');
})
app.listen(8000);
2.路由中间件
var express=require('express');
var app=express();
app.get('/',function(req,res,next){
console.log(1);
next();
})
app.get('/',function(req,res,next){
console.log(2);
next();
})
app.get('/login',function(req,res,next){
console.log(3);
})
app.listen(8000);
3.错误处理中间件
var express=require('express');
var app=express();
app.set('view engine','ejs');
app.get('/index',function(req,res){
res.send('首页');
})
/*中间件相应 404*/
app.use(function(req,res){
//res.render('404',{});
res.status(404).send('404');
})
app.listen(8000);
4.内置中间件
//静态服务 index.html
app.use('/static',express.static("./static")); /*匹配所有的路径*/
app.use('/news',express.static("./static")); /*匹配所有的路径*/
5.第三方中间件,eg:body-parser 中间件
安装:
npm install body-parser --save
引入:
var bodyParser = require('body-parser')
设置中间件:
app.use(bodyParser.urlencoded({ extended: false })); //form 表单提交的数据
app.use(bodyParser.json()); //提交的 json 数据的数据
一个demo:获取post表单提交的数据
app.js
var express=require('express');
var bodyParser=require('body-parser');
var app=express();
app.set('view engine','ejs');
app.set('views', __dirname + '/views');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
app.get('/',function(req,res){
res.render('signup');
})
app.post('/register',function(req,res){
res.send(req.body);
})
app.listen(3000);
signup.ejs
<form method="post" id="form" action="/register">
<label for="name">用户名:</label><br/>
<input type="text" name="name" id="name" placeholder="输入用户名"><br/>
<label for="password">密码:</label><br/>
<input type="password" name="password" id="password" placeholder="输入密码"><br/>
<label for="ok">确认密码:</label><br/>
<input type="password" name="password-ok" placeholder="再次输入密码"><br/>
<input type="file" name="picture" value="上传头像"><br/>
<input type="submit" name="" value="注册"><br/>
</form>
- Cookie使用
1.安装 cnpm instlal cookie-parser –save
2.引入 var cookieParser = require(‘cookie-parser’);
3.设置中间件:app.use(cookieParser());
4.设置Cookie:res.cookie(“name”,’zhangsan’,{maxAge: 900000, httpOnly: true});
//HttpOnly 默认 false 不允许 客户端脚本访问
5.获取cookie:req.cookies.name - session
session 是另一种记录客户状态的机制, 不同的是 Cookie 保存在客户端浏览器中, 而 session 保存在服务器上.
工作流程:当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于key,value 的键值对,然后将 key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)。 客户的信息都保存在 session 中。
安装:npm install express-session –save
引入:var session = require(“express-session”);
设置中间件:
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
}))
设置值:req.session.username = “张三”;
获取值:req.session.username;
使用参数:
app.use(session({
secret: '12345',
name: 'name',
cookie: {maxAge: 60000},
resave: false,
saveUninitialized: true
}));
常用方法:
req.session.destroy(function(err) { /*销毁 session*/
})
req.session.username='张三'; //设置 session
req.session.username //获取 session
req.session.cookie.maxAge=0; //重新设置 cookie 的过期时间
Demo:将session存入MongoDB数据库
安装模块:express-session,connect-mongo
引入模块:
var session = require(“express-session”);
const MongoStore = require(‘connect-mongo’)(session);
配置中间件:
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
rolling:true,
cookie:{
maxAge:100000
},
store: new MongoStore({
url: 'mongodb://127.0.0.1:27017/student',
touchAfter: 24 * 3600 // time period in seconds
})
}))
- Cookie与Session的区别
1、 cookie 数据存放在客户的浏览器上, session 数据放在服务器上。
2、 cookie 不是很安全, 别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗
考虑到安全应当使用 session。第 6 页 共 6 页
3、 session 会在一定时间内保存在服务器上。 当访问增多, 会比较占用你服务器的性能
考虑到减轻服务器性能方面, 应当使用 COOKIE。
4、 单个 cookie 保存的数据不能超过 4K, 很多浏览器都限制一个站点最多保存 20 个 cookie。