一,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)
}
})