node学习笔记三

撰写于 2017-07-05 修改于 2017-07-05

express:

1.数据

2.中间件


http-无状态的

cookie、session

cookie:在浏览器保存一些数据,每次请求都会带过来
*不安全、有限(4K)

session:保存数据,保存在服务端
*安全、无限


session:基于cookie实现的

*cookie中会有一个session的ID,服务器利用sessionid找到session文件、读取、写入

隐患:session劫持


1.读取——cookie-parser
2.发送——

session
cookie-session


cookie:

1.cookie空间非常小——省着用
2.安全性非常差

1.精打细算
2.校验cookie是否被篡改过

a.发送cookie
res.secret=’字符串’;
res.cookie(名字, 值, {path: ‘/‘, maxAge: 毫秒, signed: true});

b.读取cookie
cookie-parser

server.use(cookieParser(‘秘钥’));

server.use(function (){
req.cookies 未签名版
req.signedCookies 签名版
});

c.删除cookie
res.clearCookie(名字);



session:

cookie-session

1.写入
2.读取

session劫持


server.use(cookieParser());
server.use(cookieSession({
keys: [.., .., .., ..]
}));

server.use(‘/‘, function (){
req.session
});

delete req.session


1.cookie-存在浏览器,4K,不安全
签名、加密

2.session-存在服务器
不能独立存在,基于cookie


` server.use(cookieParser(‘签名字符串’));
server.use(cookieSession({

}));

server.use(function (req, res){
    res.cookie(名字, 值, {signed: true});

    res.cookies['user']
    res.clearCookie('名字');

    res.session['xxx']
    delete res.session['xxx'];
});

`

模板引擎:

jade-破坏式、侵入式、强依赖
ejs-温和、非侵入式、弱依赖


html                <html></html>

html                <html>
    head                <head>
        style                <style></style>
                    </head>
    body                <body>
        div                <div></div>
        div                <div></div>
                    </body>
                </html>

1.根据缩进,规定层级
2.属性放在()里面,逗号分隔
3.内容空个格,直接往后堆


属性


script(src=”a.js”)


内容

官网
a(href=”http://www.zhinengshe.com/“) 官网


<div>
    xxxxx
    <div>
        aaaaa
        ...
    </div>
</div>

style=”width:200px;height:200px;background:red;”
1.普通属性写法
2.用json

class=”aaa left-swrap active”
1.普通属性写法
2.用arr


简写


##
模板引擎:生成页面 ##
1.jade:破坏式
2.ejs:保留式


##
jade ##
1.根据缩进划分层级
2.属性用()表示,用逗号分隔
style={} class=[]
3.内容
div xxx
span xxx
a(href=”xxx”) 链接


jade.render(‘字符串’);
jade.renderFile(‘模板文件名’, 参数)


jade

1.识别单双标签

注入式攻击


ejs——非侵入、非破坏

<%= name %>
<%= json.arr[0].name %>
<%= 12+5 %>
<%= ‘asdfasdf’ %>


express:

1.主体

2.cookie、session

3.数据

4.模板引擎

body-parser 解析post数据
multer 解析post文件


body-parser 解析post数据 application/x-www-form-urlencoded
server.use(bodyParse.urlencode());
req.body

multer 解析post文件 multipart/form-data
var obj=multer({dest: ‘upload/‘});

server.use(obj.any());

server.use(function (req, res){
req.files[0].originalname
req.files[0].path
});

把扩展名加上
//‘upload/aadfaew324we34’ + ‘.txt’
//‘upload/aadfaew324we34.txt’
var newName=file.path+pathLib.parse(file.originalname).ext;

fs.rename(老名, 新名, function (err){});


express整合

body-parser
multer

模板引擎

express 模板引擎

consolidate-适配


模板引擎:适配

1.consolidate

consolidate=require

server.set(‘view engine’, ‘html’);
server.set(‘views’, ‘模板文件目录’);
server.engine(‘html’, consolidate.ejs);

server.get(‘/‘, function (req, res){
res.render(‘模板文件’, 数据);
});


route-路由:

把不同的目录,对应到不同的模块

xxxx.com/aaa/ mod1
xxxx.com/news/ mod_news
post news_post
list news_list
content news_content
xxxx.com/user/ mod_users


server.get();
server.use()
server.post()

Router——迷你server
router.get();
router.post();
router.use();


Router——拆
/user/…. mod_user
/item/…. mod_item

//1.创建router
var router=express.Router();

//2.把router添加到server
server.use(‘/user’, router);

//3.router内部
router.get(‘/1.html’)
router.post(‘/2.html’)


consolidate

server.set(‘view engine’, ‘html’);
server.set(‘views’, ‘模板目录’);
server.engine(‘html’, consolidate.ejs);

server.use(function (req, res){
res.render(‘模板文件’, 数据);
});


Router——子服务

var router1=express.Router();
server.use(‘/user’, router1);

var r=express.Router();
router1.use(‘/user_mod’, r);
router1.use(‘/user_reg’, function (){});
http://www.xxxx.com/user/user_mod
http://www.xxxx.com/user/user_reg
http://www.xxxx.com/user/user_login

var router2=express.Router();
server.use(‘/news’, router2);
http://www.xxxx.com/news/list
http://www.xxxx.com/news/post
http://www.xxxx.com/news/content

var router3=express.Router();
server.use(‘/item’, router3);
http://www.xxxx.com/item/buy
http://www.xxxx.com/item/mod
http://www.xxxx.com/item/del


Site by yophy using Hexo & Random

Hide