express框架 、cookie 、 session、jade模板库

一,cookie,session

cookie ---- 在浏览器保存一些数据,每次请求都会带给服务器

*保存在客户端,可修改,不安全;4k

session  -----  保存在服务端

*安全 无限;but: session是基于cookie实现的(cookie中会有一个sessionid,服务器会根据sessionid找到session 文件、读取、写入) ,这样就会造成session劫持,

cookie

发送 cookie ----res.cookie('user','wangni',{path:'/',maxAge:24*3600*1000})

读取 cookie ---- cookie-parser(中间件)

server.use(cookieParser());
server.use('/',function(req,res){
	console.log(req.cookies);
	res.send('ok')
});

cookie 删除

res.clearCookie('名字');

cookie安全性(加密用到cookie-encrypter)

server.use(cookieParser('qwertyuiop'));
server.use('/',function(req,res){
	//发送
	//req.secret = 'qwertyuiop';
	res.cookie('user','enen',{signed:true});

	//读取

	console.log('无签名cookie:',req.cookies);  
	console.log('签名cookie:', req.signedCookies);

	//删除 cookie
	res.clearCookie('user');
	res.send('ok');
});

session

const express = require('express');
const cookieParser = require('cookie-parser');
const cookieSession = require('cookie-session');
var server = express();
server.use(cookieParser());

var arr = [];
for(var i=0; i<999;i++){
	arr.push('sig_'+Math.random());
}
server.use(cookieSession({
	keys:arr,	
	maxAge:2*3600*1000
}));

server.use('/',function(req,res){
	console.log(req.session)
	if(req.session['count'] == null){
		req.session['count'] = 1;
	}else{
		req.session['count']++
	}
	console.log(req.session['count']);
	res.send('ok')
});
server.listen(8090);

session删除

delete req.session


二,jade模板库

(1) jade --- 破坏式、侵入式、强依赖

(2)ejs --- 温和、非浸入式、若侵入式

jade

//jade模板库
const jade = require('jade');
const fs = require('fs');

//var str = jade.render('html')
var str = jade.renderFile('www/1.jade',{pretty:true,a:4,b:6,
	arr:['qw','qe','er','dfdf'],
	content:'<h2>这里是标题</h2><p>这是我的内容区</p>'})
// console.log(str);
fs.writeFile('./www/jade.html', str, function(err){
	if(err){
		console.log('写入失败');
	}else{
		console.log('写入成功');
	}
});

根据缩进,规定层级;属性(src="",type="");内容: ###(空格 ###);原样输出( |### / .)

html
	head
		style
		script(src="aa.js")
		link(href="aa.css",rel="stylesheet")
		script
			include aa.js
	body 
		|qwqe
		|1234
		div(class="asd active") 大佬
		div.asd #{a+b}
		div.asd=a
		div#ert 三
		div(class=['asd','active'])
			ul
				li(style="width:100px;height:30px")
					input(type="text",id="user",value="enen")
				li(style={width:'100px',height:'30px'})
					input(type="password",id="pass",value="")
				li
					input(type="submit",value="提交")
			ul
				-for(i=0; i<arr.length;i++)
					li=arr[i]
			div!=content
			-var a=18
			if(a%2==0)
				div(style={background:'red'}) 偶数
			else
				div(style={background:'green'}) 奇数
			-var a=5
			case a
				when 1
					div 111
				when 2
					div 222
				default
					div 啥都不是
			



ejs

//ejs模板
const ejs = require('ejs');
ejs.renderFile('www/1.ejs',{name:'wangni'},function(err,data){
	if(err){
		console.log('编译错误');
	}else{
		console.log(data)
	}
})

猜你喜欢

转载自blog.csdn.net/qq_33828155/article/details/80981577