Node.js-第三方中间件

第三方中间件

let express = require("express");
let app = express();
let ejs = require('ejs');
let bodyParser = require('body-parser'); //第三方中间件
app.use(bodyParser.urlencoded({ extended: false })); // application/x-www-form-urlencoded
app.use(bodyParser.json()); //application/json
let cookieParser = require('cookie-parser');
app.use(cookieParser('abcdef')); //如果cookie 要加密   这里 设置加密的字符
使用内置中间件  static  设置静态资源文件托管
例如设置  static 文件为静态资源目录
app.use(express.static('static')); //设置static文件为静态资源目录
设置静态资源文件的虚拟目录
静态路径是/public/1.jpg  去static  文件  找静态文件
app.use('/public', express.static('static'));

设置模板引擎
固定写法 设置ejs模板引擎

app.set('view engine', 'ejs');

放置ejs模板的文件叫views文件
可以修改默认文件名称
__dirname 指当前项目的根目录

app.set('views', __dirname + '/view');
  • 第三方中间件 安装使用

  • body-parser第三方中间件的使用

  • 表单提交 post 方式获取值的中间件
    1.安装 cnpm install --save-dev body-parser
    2.引入中间件
    3.设置解析格式
    4.直接在post请求里面直接使用 req.body 获取的数据是json格式

  • 第三方中间件 cookie-parser 使用
    1.安装 cnpm install --save-dev cookie-parser
    2.引入 + 关联
    3.直接使用

app.get('/', (req, res) => {
    //渲染首页  不用写路径

    //检测是否记住了 有缓存
    let userid = null;
    let userpwd = null;
    let rember = null;
    //下面这个是不设置签名读取的方法
    // if (req.cookies['USER_KEY']) {
    //     let user = JSON.parse(req.cookies['USER_KEY']);
    //     userid = user.userid;
    //     userpwd = user.userpwd;
    //     rember = user.rember;
    // }
    //cookie设置签名 读取方式
    if (req.signedCookies['USER_KEY']) {
        let user = JSON.parse(req.signedCookies['USER_KEY']);
        userid = user.userid;
        userpwd = user.userpwd;
        rember = user.rember;
    }
    res.render('index', {
        userid: userid,
        userpwd: userpwd,
        rember: rember
    });
});

下面是 body-parser 中间件的获取值 req.body

app.post('/dologin', (req, res) => {
    console.log(req.body); //[Object: null prototype] { userid: 'admin', userpwd: '12345' }

    //如果在前端  选择  记住我  就写入缓存
    if (req.body.rember) {
        console.log(1);
        //写入缓存
        res.cookie('USER_KEY', JSON.stringify(req.body), {
            maxAge: 60 * 10 * 10 * 10, //6秒
            path: '/', //path  指当前cookie在哪个路径下有效  默认是 /
            //domain:'www.maodou.com',//设置域名
            signed: true //设置cookie 签名的  加密的
        });
    }
    res.send('登录成功');
});
let session = require('express-session');

信任session缓存

app.set('trust proxy', 1);
  • 关联到express框架 配置options
app.use(session({
    secret: "keyboard cat", //设置签名的
    resave: false, //  不强制保存session
    saveUninitialized: true, //强制存储为初始化的session
    cookie: {
        secure: true //这个是安全性考虑的  这个设置为true  就得写信任服务端代码
            //这是属性设置为true  https 安全性协议可以设置值    如果是http 就要写信任代理
    }
}));

使用内置中间件 static 设置静态资源文件托管
例如设置 static 文件为静态资源目录
app.use(express.static('static')); //设置static文件为静态资源目录
设置静态资源文件的虚拟目录
静态路径是/public/1.jpg 去static 文件 找静态文件

app.use('/public', express.static('static'));

设置模板引擎
固定写法 设置ejs模板引擎

app.set('view engine', 'ejs');

放置ejs模板的文件叫views文件
可以修改默认文件名称
__dirname 指当前项目的根目录
app.set('views', __dirname + '/view');

第三方中间件 安装使用
body-parser第三方中间件的使用
表单提交 post 方式获取值的中间件
1.安装 cnpm install --save-dev body-parser
2.引入中间件
3.设置解析格式
4.直接在post请求里面直接使用 req.body 获取的数据是json格式

第三方中间件 cookie-parser 使用
1.安装 cnpm install --save-dev cookie-parser
2.引入 + 关联
3.直接使用

第三方中间件 express-session
1.安装 cnpm install --save-dev express-session
2.引入

app.get('/', (req, res) => {
    //渲染首页  不用写路径

    //检测是否记住了 有缓存
    let userid = null;
    let userpwd = null;
    let rember = null;
    //下面这个是不设置签名读取的方法
    // if (req.cookies['USER_KEY']) {
    //     let user = JSON.parse(req.cookies['USER_KEY']);
    //     userid = user.userid;
    //     userpwd = user.userpwd;
    //     rember = user.rember;
    // }
    //cookie设置签名 读取方式
    if (req.signedCookies['USER_KEY']) {
        let user = JSON.parse(req.signedCookies['USER_KEY']);
        userid = user.userid;
        userpwd = user.userpwd;
        rember = user.rember;
    }

    console.log(req.session.user);
    res.render('index', {
        userid: userid,
        userpwd: userpwd,
        rember: rember
    });
});
// 下面是 body-parser  中间件的获取值   req.body
app.post('/dologin', (req, res) => {
    //console.log(req.body);//[Object: null prototype] { userid: 'admin', userpwd: '12345' }

    //如果在前端  选择  记住我  就写入缓存
    if (req.body.rember) {
        //写入缓存
        res.cookie('USER_KEY', JSON.stringify(req.body), {
            maxAge: 60 * 10 * 10 * 10, //6秒
            path: '/', //path  指当前cookie在哪个路径下有效  默认是 /
            //domain:'www.maodou.com',//设置域名
            signed: true //设置cookie 签名的  加密的
        });

        //写入session
        req.session.user = JSON.stringify(req.body);
    }
    res.send('登录成功');
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值