express入门

  • 安装
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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值